繁体   English   中英

python mysql 连接器不支持字符集“utf8”

[英]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 服务器,则必须切换到正确的连接器:

  1. 安装 MariaDB 连接器:

    $ pip3 安装 mariadb

  2. 更改您的代码以添加import mariadbmariadb.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM