我发现(很难)
MySQL’s UTF8 character set只有3个字节.一些研究表明我可以通过更改表来利用
utf8mb4校对来解决这个问题,并获得UTF应该是完整的4个字节.
我已经这样做了.我的数据库,表格和列都已更改为使用此charset.但是,如果我的数据的unicode代码点大于U FFFF,我仍会收到此消息:
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='"
我发现我有以下设置:
> show variables like '%collation%';
collation_connection utf8_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci
通过更改my.cnf来设置collation_server.我的问题是,如何更改连接?我目前使用SQL Alchemy和pymysql连接到数据库,如下所示:
connect_string = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(DB_USER, DB_PASS, DB_HOST, DB_PORT, DATABASE)
engine = create_engine(connect_string, convert_unicode=True, echo=False)
session = sessionmaker()
session.configure(bind=engine)
通过SQL Alchemy连接时,如何从utf8_general_ci更改为utf8mb4_general_ci?