lower_case_table_names MySQL 8.0.12 中的设置
lower_case_table_names Settings in MySQL 8.0.12
我刚刚在 Ubuntu 16.0.4.
中编译了版本 MySQL 8.0.12
按照网站中的说明制作以下 my.cnf 文件后:
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF
log_error = /var/log/mysql/error.log
# Remove case sensitive in table names
lower_case_table_names=1
我收到以下错误:
2018-08-11T19:45:06.461585Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
我应该更改什么以使数据字典与服务器设置对齐?
根据此 link,lower_case_table_names 应与 --initialize 选项一起设置。
MySQL 文档说
lower_case_table_names只能在初始化服务器时配置。 禁止在服务器初始化后更改lower_case_table_names设置。
https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
要解决此问题,
只需在 bin 文件夹中使用以下命令备份现有的 db Schema (/usr/local/mysql/bin)
./mysqldump -uroot -p 密码 > dump.sql
备份完成后,使用命令删除 Mysql Home(/usr/local/mysql/) 中的现有数据文件夹
rm -rf 数据
现在在 MYSQLD 部分 my.cnf 中将配置添加为“lower_case_table_names=1” (/etc/my.cnf)
现在在 bin 目录中使用以下命令初始化数据目录 (/usr/local/mysql/bin)
对于安全模式
./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --console
不安全模式
./mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql --console
数据目录初始化后,对于不安全模式再次重复安装,对于安全模式使用根目录在数据目录初始化运行时初始化的密码。
现在使用 (/usr/local/mysql/bin) 目录
中的命令导入 Mysql 服务器中现有的转储文件
./mysql -uroot -p 密码 < file.sql
防止这个问题的最佳方法是:首先添加
[mysqld]
lower_case_table_names=1
然后首次启动 mysql 服务。
但是无论如何如果你已经启动了服务器,解决你的问题:
1.stop mysql:
systemctl stop mysql
2.clean数据目录或更改默认值,以下是针对新安装的,如果您的数据库中有数据预先备份它们
rm -rf /var/lib/mysql
3.Insert lower_case_table_names = 1 在你的 my.cnf:
[mysqld]
lower_case_table_names=1
4.Start 再一次
systemctl start mysqld
如果现在有人遇到这个问题,如果你已经初始化了 mysql,意味着你已经初始化了 运行 然后出现了这个错误,只需在 my.ini 文件.
lower_case_table_names=
到目前为止,我可以使用变通方法(我最初在 askubuntu 上发布):通过在 lower_case_table_names
之后使用 lower_case_table_names
的新值重新初始化 MySQL安装。以下步骤适用于新安装。如果您的数据库中已有数据,请先将其导出,然后再将其导入回来:
- 安装MySQL:
sudo apt-get update
sudo apt-get install mysql-server -y
- 停止 MySQL 服务:
sudo service mysql stop
- 删除MySQL数据目录:
sudo rm -rf /var/lib/mysql
- 重新创建MySQL数据目录(是的,仅删除其内容是不够的):
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql
- 将
lower_case_table_names = 1
添加到 /etc/mysql/mysql.conf.d/mysqld.cnf
中的 [mysqld]
部分。
- 用
--lower_case_table_names=1
重新初始化 MySQL:
sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
- 启动MySQL服务:
sudo service mysql start
- 为 MySQL 用户
root
检索新生成的密码:
sudo grep 'temporary password' /var/log/mysql/error.log
- 通过以下任一方式更改 MySQL 用户
root
的密码:
sudo mysql -u root -p
并执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPa$$w0rd';
之后,或者无论如何调用“强化”脚本:
sudo mysql_secure_installation
之后,您可以通过输入 MySQL shell:
来验证 lower_case_table_names
设置
sudo mysql -u root -p
并执行:
SHOW VARIABLES LIKE 'lower_case_%';
预期输出:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
我刚刚在 Ubuntu 16.0.4.
中编译了版本 MySQL 8.0.12按照网站中的说明制作以下 my.cnf 文件后:
[mysqld]
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
port=3306
log-error=/usr/local/mysql/data/localhost.localdomain.err
user=mysql
secure_file_priv=/usr/local/mysql/mysql-files
local_infile=OFF
log_error = /var/log/mysql/error.log
# Remove case sensitive in table names
lower_case_table_names=1
我收到以下错误:
2018-08-11T19:45:06.461585Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('1') and data dictionary ('0').
我应该更改什么以使数据字典与服务器设置对齐?
根据此 link,lower_case_table_names 应与 --initialize 选项一起设置。
MySQL 文档说
lower_case_table_names只能在初始化服务器时配置。 禁止在服务器初始化后更改lower_case_table_names设置。
https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
要解决此问题,
只需在 bin 文件夹中使用以下命令备份现有的 db Schema (/usr/local/mysql/bin) ./mysqldump -uroot -p 密码 > dump.sql
备份完成后,使用命令删除 Mysql Home(/usr/local/mysql/) 中的现有数据文件夹 rm -rf 数据
现在在 MYSQLD 部分 my.cnf 中将配置添加为“lower_case_table_names=1” (/etc/my.cnf)
现在在 bin 目录中使用以下命令初始化数据目录 (/usr/local/mysql/bin)
对于安全模式 ./mysqld --defaults-file=/etc/my.cnf --initialize --user=mysql --console
不安全模式 ./mysqld --defaults-file=/etc/my.cnf --initialize-insecure --user=mysql --console
数据目录初始化后,对于不安全模式再次重复安装,对于安全模式使用根目录在数据目录初始化运行时初始化的密码。
现在使用 (/usr/local/mysql/bin) 目录
中的命令导入 Mysql 服务器中现有的转储文件
./mysql -uroot -p 密码 < file.sql
防止这个问题的最佳方法是:首先添加
[mysqld]
lower_case_table_names=1
然后首次启动 mysql 服务。
但是无论如何如果你已经启动了服务器,解决你的问题:
1.stop mysql:
systemctl stop mysql
2.clean数据目录或更改默认值,以下是针对新安装的,如果您的数据库中有数据预先备份它们
rm -rf /var/lib/mysql
3.Insert lower_case_table_names = 1 在你的 my.cnf:
[mysqld]
lower_case_table_names=1
4.Start 再一次
systemctl start mysqld
如果现在有人遇到这个问题,如果你已经初始化了 mysql,意味着你已经初始化了 运行 然后出现了这个错误,只需在 my.ini 文件.
lower_case_table_names=
到目前为止,我可以使用变通方法(我最初在 askubuntu 上发布):通过在 lower_case_table_names
之后使用 lower_case_table_names
的新值重新初始化 MySQL安装。以下步骤适用于新安装。如果您的数据库中已有数据,请先将其导出,然后再将其导入回来:
- 安装MySQL:
sudo apt-get update sudo apt-get install mysql-server -y
- 停止 MySQL 服务:
sudo service mysql stop
- 删除MySQL数据目录:
sudo rm -rf /var/lib/mysql
- 重新创建MySQL数据目录(是的,仅删除其内容是不够的):
sudo mkdir /var/lib/mysql sudo chown mysql:mysql /var/lib/mysql sudo chmod 700 /var/lib/mysql
- 将
lower_case_table_names = 1
添加到/etc/mysql/mysql.conf.d/mysqld.cnf
中的[mysqld]
部分。 - 用
--lower_case_table_names=1
重新初始化 MySQL:sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
- 启动MySQL服务:
sudo service mysql start
- 为 MySQL 用户
root
检索新生成的密码:sudo grep 'temporary password' /var/log/mysql/error.log
- 通过以下任一方式更改 MySQL 用户
root
的密码:
并执行:sudo mysql -u root -p
之后,或者无论如何调用“强化”脚本:ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPa$$w0rd';
sudo mysql_secure_installation
之后,您可以通过输入 MySQL shell:
来验证lower_case_table_names
设置
sudo mysql -u root -p
并执行:
SHOW VARIABLES LIKE 'lower_case_%';
预期输出:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+