MySQL8 报错 Different lower_case_table_names settings for server ('1') and data dictionary ('0').
✅ 背景说明
MySQL 8 数据字典是保存在数据库内部的,如果 lower_case_table_names
和之前初始化使用的值不一致,就会报错:
Different lower_case_table_names settings for server ('1') and data dictionary ('0')
✅ 操作流程(建议按顺序执行)
🔥 步骤 1:停止 MySQL 服务
sudo systemctl stop mysql
🔥 步骤 2:删除原有数据目录(⚠️ 会删除所有数据库)
sudo rm -rf /var/lib/mysql
sudo mkdir -p /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
🔥 步骤 3:使用指定参数重新初始化数据库
sudo mysqld --initialize --lower-case-table-names=1 --user=mysql
- 这将初始化一个新数据库,配置大小写不敏感。
- 初始化完成后会生成临时 root 密码(查看
/var/log/mysqld.log
,如果有)。
🔥 步骤 4:修改配置文件以保持一致
编辑 /etc/my.cnf
或 /etc/mysql/mysql.conf.d/mysqld.cnf
,在 [mysqld]
部分添加:
[mysqld]
lower_case_table_names=1
⚠️ 大小写严格要求:必须写作
lower_case_table_names
(下划线),不能写成lower-case-table-names
,否则无效。
🔥 步骤 5:启动 MySQL 服务
sudo systemctl start mysql
🔍 可选:查看日志是否启动成功
sudo journalctl -u mysql
🔐 可选:设置 root 密码(首次初始化后)
sudo mysql_secure_installation
✅ 验证是否生效
登录后:
SHOW VARIABLES LIKE 'lower_case_table_names';
输出应为:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_table_names | 1 |
+------------------------+-------+
✅ 补充说明
值 | 含义 | 平台 |
---|---|---|
0 | 区分大小写 | 默认 Linux |
1 | 不区分大小写,所有表名保存为小写 | Windows 推荐,跨平台推荐 |
2 | 保留创建时大小写,但不区分大小写(仅限 Windows) | Windows 特有 |