我有一个python代码,它可以向运行在同一台机器上的MySQL数据库添加行。代码如下:
import mysql.connector
config = {
'user': 'root',
'password': 'a$$enjoyer',
'host': 'localhost',
'database': 'db',
'raise_on_warnings': True
}
cnx = mysql.connector.connect(**config)
con = cnx.cursor()
现在,我有一个表,其中有一个MEDIUMTEXT
列。问题是,每当我尝试插入文字与表情符号(是的,我需要他们),我得到的错误如下:1366 (HY000): Incorrect string value: '\xF0\x9F\xA5\xB6' for column 'epictext' at row 1
.
代码如下所示:
con.execute('INSERT INTO nice VALUES(%s,%s,%s)', [1,2,'🥶'])
我在这里发现了一些问题,解决了这个错误,例如this一,但他们没有解决这个问题。
奇怪的是,直接在MySql控制台运行INSERT INTO nice VALUES(1,2,'🥶');
就可以了,而且在config
中添加'collation': 'utf8mb4_general_ci'
可以完全修复这个问题,但是当我上次尝试这样做时,这行代码是不必要的,如果可能的话,我真的希望避免使用它。
1条答案
按热度按时间qxsslcnc1#
您需要在配置中指定"charset"和"collation",如下所示
希望能有所帮助