docker-mysql的几个问题
来水一篇文章
文章目录
- 问题一:
- 问题2:
问题一:
在Navicat上执行大脚本mysql的sql文件时,出现插入数据报错的问题,查了一下innodb_log_file_size
参数show variables like 'innodb_log_file_size';
只有50331648即48M,所以在my.cnf
配置文件(自定义的文件)中更改了此参数大小,由于没设置,这里直接写入
echo -e "[mysqld]\ninnodb_log_file_size=500M" >> my.cnf
重启mysql镜像,使配置生效,重新使用Navicat执行脚本,依旧报错。
应该是某些设置问题,直接尝试了命令行执行sql脚本。
source tsql.sql
解决。
执行之前,需要将windows中的SQL文件导入debian中,由于/mnt/
目录用于挂载 Windows 系统中的磁盘和分区,所以通过该目录访问windows磁盘使用cp
或者mv
命令就可以实现文件复制到debian中。执行完SQL删掉脚本文件,除了占内存也没什么用了。
注:这里我用的wsl系统
问题2:
Different lower_case_table_names settings for server ('1') and data dictionary ('0').
mysql8默认不识别大小写,使用命令show variables like %case%;
查看到变量默认为0,但是我在my.cnf
文件设置了lower_case_table_names=1
导致的,
在大多数情况下,这需要在第一次启动MySQL服务器之前在MySQL选项文件中配置lower_case_table_names。
于是,修改容器启动配置后指定--lower-case-table-names=1
sudo docker run -d --name mysql -p 3306:3306 \
--restart unless-stopped \
-v /usr/local/mysql/log:/var/log/mysql \
-v /usr/local/mysql/conf:/etc/mysql/conf.d \
-v /usr/local/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql \
--lower-case-table-names=1
由于挂载过一次目录,所以将之前的挂载目录/data
删掉,需要备份提前移动文件,或者挂载新目录,重新执行上面命令,my.cnf
文件保持之前的lower-case-table-names=1
配置即可。