错误 1273 但我的架构不包含 utf8mb4_0900_ai_ci

Ray*_*que 4 python mysql sqlalchemy

我使用 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')
Run Code Online (Sandbox Code Playgroud)

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 */;
Run Code Online (Sandbox Code Playgroud)

预先感谢您的帮助

Ray*_*que 8

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

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

  • @wanghaoming `mysql-connector-python` 是为 MySQL8 制作的 - 其中引入了 `utf8mb4_0900_ai_ci` 并使其成为默认的 utf8mb4 排序规则。当连接到 MySQL 5.x 服务器时,默认情况下它仍然尝试将其设置为连接的排序规则。由于 MySQL 5.x 不知道有关 `utf8mb4_0900_ai_ci` 的任何信息,因此会抛出错误。 (2认同)