数据库的迁移

72 阅读2分钟

导出

www.runoob.com/mysql/mysql… 需要导出整个数据库的数据,可以使用以下命令:

mysqldump -u root -p RUNOOB > database_dump.txt

遇到的问题

默认导出出现了一个问题: ![[Pasted image 20230926192118.png]] 就是数据库默认不区分大小写,就导致我原本以驼峰命名的表都已小写出现了。 通过指令导入新数据库后,再运行代码,自动创建了一个新的和原先同名的表。 导致出现了两个TEST表。 所以在使用docker构建容器后,读取TEST表的数据为空😌 ![[Pasted image 20230926192147.png]] 使用复制表(完全结构相同)到另一个表中

INSERT INTO TEST SELECT * FROM test;
INSERT INTO DailyAlgorithmRecord SELECT * FROM dailyalgorithmrecord;
DROP TABLE dailyalgorithmrecord ;
DROP TABLE test ;

导入

就是把数据库文件信息以sql文件导出,然后进入mysql容器里面再导入

数据卷怎么上传?不会(看了官网的文档,使用ORS上传到dockerHub上,然后再拉下来,然后替换就可以了,感觉也没有很方便……)!

至于为什么不写进启动的命令里,是因为每次启动都会调用这些命令行,所以只在第一次部署的时候注入

导出的命令是mysqldump -u root -p -P 13306 gva > D:\goland\gin-vue-admin\dumpAll.sql

该命令是用于从一个 SQL 文件中恢复一个数据库的。但是,如果您的 SQL 文件是用 Windows PowerShell 和 mysqldump 命令创建的,可能会出现编码问题。因为 PowerShell 的默认编码是 UTF-16,而 MySQL 不支持这种编码1。这可能导致您的 SQL 文件中出现一些不可识别的字符,从而引发错误。

解决这个问题的方法之一是,使用 --result-file 选项来生成 ASCII 格式的输出文件1。例如:

mysqldump -u root -p -P 13306 gva --result-file=D:\goland\gin-vue-admin\dumpAll.sql

-P是宿主机链接数据库的端口

然后,您可以用这个文件来恢复数据库:

下面是把sql文件导入数据库的命令

mysql -u root -p --binary-mode --force gva < ./dumpAll.sql
# 导入sql文件