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导致的,
docker-mysql的几个问题_第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配置即可。

你可能感兴趣的:(数据库,sql,mysql)