小写\u表\u名称设置

lxkprmvk  于 2021-06-23  发布在  Mysql
关注(0)|答案(9)|浏览(457)

我刚刚在ubuntu16.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').

我应该更改什么以便数据字典与服务器设置对齐?

l0oc07j2

l0oc07j21#

缺少等号(=),更改:

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
jfewjypa

jfewjypa2#

根据这个链接,小写\u表\u名称应该与--initialize选项一起设置。

ldioqlga

ldioqlga3#

到目前为止,我可以使用一种解决方法(我最初发布在askubuntu上):通过使用的新值重新初始化mysql lower_case_table_names 安装后。以下步骤适用于新安装。如果数据库中已有数据,请先将其导出,然后再将其导入:
安装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[mysqld] 中的节 /etc/mysql/mysql.conf.d/mysqld.cnf .
使用重新初始化mysql --lower_case_table_names=1 :

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

之后,您可以验证 lower_case_table_names 在mysql中通过执行以下命令进行设置:

SHOW VARIABLES LIKE 'lower_case_%';

预期产量:

+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| lower_case_file_system | OFF   |
| lower_case_table_names | 1     |
+------------------------+-------+
sz81bmfz

sz81bmfz4#

mysql文档说
小写\u表\u名称只能在初始化服务器时配置。禁止在服务器初始化后更改小写\u表\u名称设置。
https://dev.mysql.com/doc/refman/8.0/en/identifier-case-sensitivity.html

wribegjk

wribegjk5#

为了解决这个问题,
只需在bin文件夹(/usr/local/mysql/bin)中使用以下命令备份现有的db模式即可。/mysqldump-uroot-p password>dump.sql
备份完成后,使用rm-rf data命令删除mysql home(/usr/local/mysql/)中的现有数据文件夹
现在在mysqld节(/etc/my.cnf)下的my.cnf中将配置添加为“lower\u case\u table\u names=1”
现在在bin目录(/usr/local/mysql/bin)中使用以下命令初始化数据目录
对于安全模式。/mysqld--默认文件=/etc/my.cnf--初始化--用户=mysql--控制台
对于不安全模式。/mysqld--默认文件=/etc/my.cnf--初始化不安全--user=mysql--控制台
数据目录初始化后,对于不安全模式,请再次重复安装;对于安全模式,请使用根密码,该密码在数据目录初始化运行时初始化。
现在使用(/usr/local/mysql/bin)目录中的命令导入mysql服务器中的现有转储文件
./mysql-uroot-p密码<file.sql

vfhzx4xs

vfhzx4xs6#

我有同样的问题,正如这里所描述的https://bugs.mysql.com/bug.php?id=90695 这是不支持的开箱即用。所以为了让它正常工作,我在ubuntu18.04上做了一个小写的\u table\u names=1不允许mysql启动

goqiplq2

goqiplq27#

防止这个问题的最好方法是:首先添加

[mysqld]
lower_case_table_names=1

然后第一次启动mysql服务。
但是,如果您已经启动了服务器,要解决您的问题:
1.停止mysql:

systemctl stop  mysql

2.清理数据目录或更改默认值,如果数据库中有数据,请提前备份新安装

rm -rf /var/lib/mysql

3.在my.cnf中插入小写\u表格\u names=1:

[mysqld]
lower_case_table_names=1

4.重新开始

systemctl start mysqld
bis0qfac

bis0qfac8#

如果现在有人遇到这个问题,如果你已经初始化了mysql,也就是说你已经启动并运行了mysql,然后出现了这个错误,只需在my.ini文件中注解掉这一行。

lower_case_table_names=
m2xkgtsf

m2xkgtsf9#

我为它写了剧本。请读一个答案https://stackoverflow.com/a/58983474/380247. 基本上,您需要重新创建mysql数据目录。参数lower\u case\u table\u names只能在服务器初始化时配置。

相关问题