philipsoutham / py-mysql2pgsql

Tool for migrating/converting from mysql to postgresql.
http://packages.python.org/py-mysql2pgsql/
MIT License
455 stars 169 forks source link

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-8: ordinal not in range(256) #118

Open YOOC94 opened 5 years ago

YOOC94 commented 5 years ago

The Chinese comment in the mysql table, an error is reported during the conversion:

UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-8: ordinal not in range(256)

How to solve this problem?

ssu1980 commented 5 years ago

Hi, I can't resolve this problem. I find different path for convert data (xml)

kworr commented 5 years ago

Can you provide some minified example demonstrating the problem? MySQL database dump preferred.

YOOC94 commented 5 years ago

Mysql statement to create a table:

CREATE TABLEauth_user( user_idbigint(11) NOT NULL AUTO_INCREMENT, usernamevarchar(20) NOT NULL COMMENT '用户名、登录名', nicknamevarchar(20) NOT NULL COMMENT '姓名', passwordvarchar(50) NOT NULL, create_timetimestamp NULL DEFAULT CURRENT_TIMESTAMP, update_timetimestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (user_id) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='用户表(登录账号)';

When mysql database has the above table, use py-mysql2pgsql to convert create table statement will be the following error: comments.append('COMMENT ON TABLE %s is %s;' % (table.name, QuotedString(table.comment).getquoted())) UnicodeEncodeError: 'latin-1' codec can't encode characters in position 0-8: ordinal not in range(256)