MySQL's UTF8 character set'un yalnızca 3 bayt olduğunu (zor yoldan) keşfettim. Biraz araştırma gösteriyor ki bunu tabloları değiştirerek utf8mb4
harmanlamadan kullanabiliyor ve 4 baytlık UTF almam gerekiyor.SQLAlchemy ve pymysql kullanarak, utf8mb4 kullanmak için bağlantıyı nasıl ayarlayabilirim?
Bunu yaptım. Bu karakter kümesini kullanabilmek için veritabanım, tablolarım ve sütunlarım ALTER
ed. collation_server
yaparak kuruldu
> show variables like '%collation%';
collation_connection utf8_general_ci
collation_database utf8mb4_general_ci
collation_server utf8mb4_general_ci
: Ben aşağıdaki ayarlara sahip keşfetti
Illegal mix of collations (utf8mb4_general_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='"
: Ben U + FFFF daha Unicode kod noktası daha büyük sahip veri aldıysak, hala bu iletisini my.cnf
olarak değişir. Sorum şu, bağlantıyı nasıl değiştireceğim? SQL Simyası'yla aracılığıyla bağlanırken
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)
Ben utf8mb4_general_ci
için utf8_general_ci
ne değiştirmek için ne yapabilirim: Şu anda böyle bir SQL Alchemy ve pymysql kullanarak veritabanına bağlanmak?