我刚刚在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').
我应该更改什么以使数据字典与服务器设置保持一致?
答案 0 :(得分:1)
根据此link,lower_case_table_names应该与--initialize选项一起设置。
答案 1 :(得分:1)
我遇到了同样的问题,并且如此处https://bugs.mysql.com/bug.php?id=90695所述,现成的不支持。所以我为了使其正常工作而采取的解决方法是 lower_case_table_names=1 on Ubuntu 18.04 doesn't let mysql to start
答案 2 :(得分:1)
到目前为止,我可以使用一种解决方法(我最初发布在askubuntu上):通过在安装后用lower_case_table_names
的新值重新初始化MySQL。以下步骤适用于新安装。如果数据库中已经有数据,请先将其导出,然后再导入:
sudo apt-get update
sudo apt-get install mysql-server -y
sudo service mysql stop
sudo rm -rf /var/lib/mysql
sudo mkdir /var/lib/mysql
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql
lower_case_table_names = 1
添加到[mysqld]
中的/etc/mysql/mysql.conf.d/mysqld.cnf
部分。--lower_case_table_names=1
重新初始化MySQL:
sudo mysqld --defaults-file /etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
sudo service mysql start
root
的新生成的密码:
sudo grep 'temporary password' /var/log/mysql/error.log
root
的密码:
sudo mysql -u root -p
并执行:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'MyNewPa$$w0rd';
之后,也可以通过调用“强化”脚本进行操作:
sudo mysql_secure_installation
之后,您可以通过执行以下命令来验证MySQL中的lower_case_table_names
设置:
SHOW VARIABLES LIKE 'lower_case_%';
预期输出:
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 1 |
+------------------------+-------+
答案 3 :(得分:0)
MySQL文档说
lower_case_table_names只能在初始化服务器时进行配置。 禁止在服务器初始化后更改lower_case_table_names设置。
https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html
答案 4 :(得分:0)
要解决此问题,
只需在bin文件夹(/ usr / local / mysql / bin)中使用以下命令对现有数据库模式进行备份 ./ mysqldump -uroot -p密码> dump.sql
执行备份后,使用以下命令删除Mysql Home(/ usr / local / mysql /)中的现有数据文件夹 rm -rf数据
现在将配置添加为“ lower_case_table_names = 1 ”在my.cnf中的 MYSQLD部分(/etc/my.cnf)
< / li>现在使用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 Server中
。/mysql -uroot -p密码
答案 5 :(得分:0)
要解决您的问题,
1。停止mysql:
systemctl stop mysql
2.clean数据目录或更改默认目录,以下内容适用于新安装,如果您的数据库中已经有数据备份,则请事先
rm -rf /var/lib/mysql
3。将lower_case_table_names = 1插入my.cnf:
[mysqld]
lower_case_table_names=1
4。重新开始
systemctl start mysqld
答案 6 :(得分:0)
我为此写了一个脚本。请阅读答案https://stackoverflow.com/a/58983474/380247。 基本上,您需要重新初始化MySQL数据目录。 参数lower_case_table_names只能在服务器初始化时配置。
答案 7 :(得分:0)
如果现在有人遇到此问题,如果您已经初始化了mysql,这意味着您已经启动并运行了mysql,然后发生了此错误,只需在my.ini文件中将此行注释掉即可。
lower_case_table_names=
答案 8 :(得分:0)
缺少等号(=),更改:
sudo mysqld --defaults-file /etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console
进入:
sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console