希望把Linux中运行的mysql数据迁移到本地,但是用上文直接拷贝数据的方法居然报错了!
log
2025-03-15 20:14:32 2025-03-15T12:14:32.133704Z 1 [ERROR] [MY-011087] [Server] Different lower_case_table_names settings for server ('2') and data dictionary ('0').
2025-03-15 20:14:32 2025-03-15T12:14:32.133818Z 0 [ERROR] [MY-010020] [Server] Data Dictionary initialization failed.
2025-03-15 20:14:32 2025-03-15T12:14:32.133829Z 0 [ERROR] [MY-010119] [Server] Aborting
主要原因是:Linux系统是区分大小写的,但是Mac OS是不区分大小写的,虽然gpt说可以通过修改配置文件避免报错,但是我的文件是通过文件夹存到本地的而不是直接使用的docker volume,所以文件保存时已经丢失了大小写信息,所以此方法不通。
最后还是使用了较为传统的方法!back up to .sql!
shell
docker exec mysql_container mysqldump -u root -p --all-databases > ./all_databases.sql
在主机中,就会出现sql备份文件了。把它下载到本地,然后拷贝到docker容器中。
shell
docker cp /path/to/backup/all_databases.sql mysql-container:/tmp/all_databases.sql
导入备份到mysql
shell
mysql -u root -p < /tmp/all_databases.sql