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 特有

posted @ 2025-07-14 17:57  长空nice  阅读(76)  评论(0)    收藏  举报