【问题标题】:Error 1273 but my schema don't contain utf8mb4_0900_ai_ci错误 1273 但我的架构不包含 utf8mb4_0900_ai_ci
【发布时间】:2020-10-30 22:26:31
【问题描述】:

我已经使用 SQLAlchemy 在 python 中开发了一个应用程序。我的 MySQL 测试数据库是 8.0 版本,我的产品数据库是 5.7。我做了数据库之间的迁移,没有错误。但是当我连接到产品数据库时,我得到错误“1273 (HY000): Unknown collat​​ion: 'utf8mb4_0900_ai_ci'”。

但是,我的结构不包含“utf8mb4_0900_ai_ci”。只有“utf8mb4_general_ci”。 我指定此错误仅在我连接到产品数据库时发生。

连接数据库:

engine = create_engine('mysql+mysqlconnector://user:***********@**********:3306/amatdb?charset=utf8mb4')

SQL 示例

DROP TABLE IF EXISTS `alembic_version`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!50503 SET character_set_client = utf8mb4 */;
CREATE TABLE `alembic_version` (
  `version_num` varchar(32) NOT NULL,
  PRIMARY KEY (`version_num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
/*!40101 SET character_set_client = @saved_cs_client */;

提前感谢您的帮助

【问题讨论】:

  • 已修复:只需添加 "&collat​​ion=utf8mb4_general_ci'" engine = create_engine('mysql+mysqlconnector://user:***********@******* ***:3306/amatdb?charset=utf8mb4&collat​​ion=utf8mb4_general_ci')

标签: python mysql sqlalchemy


【解决方案1】:

已修复:只需添加“&collat​​ion=utf8mb4_general_ci'”

engine=create_engine('mysql+mysqlconnector://user:***********@**********:3306/amatdbcharset=utf8mb4&collation=utf8mb4_general_ci') 

【讨论】:

  • 你能解释一下为什么会这样吗?
  • @wanghaoming mysql-connector-python 是为 MySQL8 制作的 - 其中 utf8mb4_0900_ai_ci 被引入并作为默认的 utf8mb4 排序规则。当连接到 MySQL 5.x 服务器时,它仍然尝试将其设置为默认连接的排序规则。由于 MySQL 5.x 对utf8mb4_0900_ai_ci 一无所知,因此会引发错误。
猜你喜欢
  • 1970-01-01
  • 2013-11-29
  • 2014-02-07
  • 2015-08-11
  • 2018-12-07
  • 2020-06-28
  • 2017-01-14
相关资源
最近更新 更多