ZBLOG

connect to mysql error : Unknown collation: '0' , errno : 1273

这个错误表明 MySQL 客户端或服务端在连接时遇到了不支持的排序规则(collation)。以下是可能的原因和解决方案:


错误原因分析

  1. MySQL版本不兼容

    • 高版本MySQL(如8.0+)创建的数据库使用了新的排序规则(如utf8mb4_0900_ai_ci),但你的客户端或服务端是低版本(如5.7以下),无法识别这些新规则。
  2. 配置文件指定了无效的collation

    • 在连接参数或配置文件中显式设置了不存在的排序规则(例如 collation_server=0)。
  3. 字符集/排序规则被破坏

    • 数据库元数据损坏,导致无法读取正确的collation信息。

解决方案

1. 升级MySQL客户端/服务端

  • 确保客户端和服务端的MySQL版本一致(推荐使用相同大版本,如均为5.7或均为8.0)。
  • 如果必须使用低版本客户端连接高版本服务端,尝试以下方法: “`sql – 在服务端修改表的默认排序规则为旧版支持的格式 ALTER DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

– 修改表的排序规则 ALTER TABLE your_table CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;


#### 2. **检查连接参数**
- 在连接字符串或配置文件中移除自定义的 `collation` 参数,或改为合法的值:
  ```ini
  # JDBC示例(去掉collation参数)
  jdbc:mysql://localhost:3306/db?useUnicode=true&characterEncoding=utf8
  
  # PHP PDO示例
  $pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8mb4', 'user', 'pass');

3. 修复数据库元数据

  • 如果怀疑元数据损坏,尝试导出数据并重建数据库:
    1. 导出数据(不包含结构):
      
      mysqldump -u user -p --skip-set-charset --no-create-info your_database > data.sql
      
    2. 创建新数据库并指定旧版支持的排序规则:
      
      CREATE DATABASE new_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
      
      3.重新导入数据。

❗️临时绕过方案(不推荐)

如果问题紧急且无法立即升级,可在服务端配置中强制使用旧版排序规则:

# my.cnf (MySQL配置文件)
[mysqld]
collation_server = utf8mb4_general_ci
character_set_server = utf8mb4

验证步骤

  1. 查看支持的collation列表
    
    SHOW COLLATION LIKE 'utf8%';
    
  2. 检查当前数据库/表的设置
    ”`sql SELECT DEFAULT_CHARACTER_SET_NAME, DEFAULT_COLLATION_NAME FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = ‘your_database’;

SHOW CREATE TABLE your_table; “`


常见兼容性对照表

MySQL版本 推荐Collation
5.7及以下 utf8_general_ci
5.7+ utf8mb4_general_ci
8.0+ utf8mb4_0900_ai_ci (默认)

如果仍有问题,请提供你的MySQL版本和完整的错误日志。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23558

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?