[英]Character set 'utf8' unsupported in python mysql connector
我正在尝试使用 MySQL 连接器将我的数据库连接到 python 项目。
但是,当使用下面的代码时,
import mysql.connector
mydb = mysql.connector.MySQLConnection(
host="localhost",
user="veensew",
password="%T5687j5IiYe"
)
print(mydb)
我遇到以下错误:
mysql.connector.errors.ProgrammingError:不支持字符集“utf8”
我试图找出发生这种情况的原因,但我总是遇到同样的错误。
MySQL 连接器版本 - 8.0.30
我将不胜感激任何帮助。 提前谢谢你!
您可以尝试使用("%T5687j5IiYe").encode("utf-8")
对密码进行编码。
我遇到了同样的问题。 8.0.30 版中对 utf8_ 排序规则的处理方式显然发生了一些变化(请参阅MySQL 连接器发行说明)。 我安装了 8.0.29 版本,它为我解决了这个问题。
pip3 install mysql-connector-python==8.0.29
我以为我会在这里花两分钱。 然而我可能是错的......
这个错误我相信在 MYSQL 版本高于 5.5.3 时不会出现,这是因为引入了 utf8mb4 字符集。
https://downloads.mysql.com/docs/mysql-5.5-relnotes-en.pdf
添加了 utf8mb4 字符集。 这类似于 utf8,但其编码允许每个字符最多四个字节,以支持补充字符。
但是,如果您正在运行低于 5.5.3 的 MySQL 版本,则 Python 连接器版本 (8.0.30) 将尝试将 utf8 别名为 utf8mb4(对于低于 5.5.3 的版本显然不存在),如发行说明中所述.
https://dev.mysql.com/doc/relnotes/connector-python/en/news-8-0-30.html
MySQL 连接器/Python 8.0.30 中的更改(2022-07-26,一般
可用性)..这也使 utf8 成为 utf8mb4 的别名。 ..
由于这个别名问题,会出现以下错误
mysql.connector.errors.ProgrammingError:不支持字符集“utf8”
我相信这个错误的真正含义是
mysql.connector.errors.ProgrammingError:不支持字符集“utf8mb4”
为了解决这个问题,我会说等待上面答案所建议的以前的版本,或者将 mysql 升级到 5.5.3 以上(尽管对于大多数人来说并不是一个真正的选择)。
如果您使用MySQL 连接器连接MariaDB 服务器,则必须切换到正确的连接器:
安装 MariaDB 连接器:
$ pip3 安装 mariadb
更改您的代码以添加import mariadb
和mariadb.connect
。 在此步骤之后,您的代码应如下所示:
import mariadb
mydb = mariadb.connect(
host="localhost",
user="veensew",
password="%T5687j5IiYe"
)
print(mydb)
瞧:)
/,\ 不要降级到旧的 MySQL 连接器。 改天你会遇到更多的问题...
在MySQL连接器8.0.30中,utf8字符集更名为utf8mb3,utf8现在是utf8mb4的别名。 试试这个以防万一:
import mysql.connector
mydb = mysql.connector.MySQLConnection(
host="localhost",
user="veensew",
password="%T5687j5IiYe",
charset="utf8mb3"
)
print(mydb)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.