【问题标题】:Character set 'utf8' unsupported in python mysql connectorpython mysql连接器不支持字符集\'utf8\'
【发布时间】:2022-08-16 19:01:32
【问题描述】:

我正在尝试使用 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

我会很感激任何帮助。提前谢谢你!

  • 更改您的密码以进行测试。我猜您的密码用 % 就像一个 unicode。
  • @ElapsedSoul 我尝试更改密码,但没有成功...

标签: python mysql mysql-connector-python python-sql


【解决方案1】:

我遇到了同样的问题。显然 8.0.30 版对 utf8_ 排序规则的处理方式进行了一些更改(请参阅MySQL Connector release notes)。我安装了 8.0.29 版本,它为我解决了这个问题。

pip3 install mysql-connector-python==8.0.29

【讨论】:

    【解决方案2】:

    您可以尝试使用("%T5687j5IiYe").encode("utf-8") 对您的密码进行编码。

    【讨论】:

    • 试过这个,但没有用它似乎与我认为的连接器有关
    【解决方案3】:

    我以为我会在这里花两分钱。

    在高于 5.5.3 的 MYSQL 版本上似乎不会出现此错误, 这是因为引入了 utf8mb4 字符集。

    https://downloads.mysql.com/docs/mysql-5.5-relnotes-en.pdf

    添加了 utf8mb4 字符集。这类似于 utf8,但 它的编码允许每个字符最多四个字节以启用支持 用于补充字符。

    但是,如果您运行的 MySQL 版本低于 5.5.3 Python 连接器版本 (8.0.30) 将尝试将 utf8 别名为 utf8mb4 (显然还不存在。)

    https://dev.mysql.com/doc/relnotes/connector-python/en/news-8-0-30.html

    MySQL 连接器/Python 8.0.30 (2022-07-26, General) 中的更改
    可用性)

    ..这也使 utf8 成为 utf8mb4 的别名。 ..

    因为这个别名问题,会出现以下错误

    mysql.connector.errors.ProgrammingError:字符集'utf8' 不支持

    错误的真正含义是

    mysql.connector.errors.ProgrammingError:字符集'utf8mb4' 不支持

    为了解决这个问题,我会说等待上面答案所建议的以前的版本,或者将 mysql 升级到 5.5.3 以上(尽管对于大多数人来说并不是一个真正的选择)。

    【讨论】:

      猜你喜欢
      • 2014-08-14
      • 2017-05-25
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2019-06-24
      • 2017-08-22
      • 2021-11-09
      • 2018-07-10
      相关资源
      最近更新 更多