我正在尝试从本地 MariaDB 迁移到 Docker 版本,这本质上应该像迁移到新的 SQL Server 一样简单。我已经通过很好地设置了 Docker 容器,但似乎无法导入我的“所有数据库”转储。
这就是我得到的:
mysql -u root -p < mariadb_alldb_*.sql
Enter password:
ERROR 1050 (42S01) at line 8022: Table 'user' already exists
Run Code Online (Sandbox Code Playgroud)
通过以下方式生成转储:
mysqldump -u root -p --all-databases --skip-lock-tables > mariadb_alldb_"$(date '+%F')".sql
Run Code Online (Sandbox Code Playgroud)
更新:每次都在新的 docker 容器上运行,并且我在从中导入的目录中创建了备份。
ls * | grep mariadb_alldb_
mariadb_alldb_2020-05-04.sql
Run Code Online (Sandbox Code Playgroud)
Update2:也许这与我的docker设置有关?
这是我的 docker cmd:
docker stop mariadb && docker rm mariadb
docker run -d --name="mariadb" \
-p 3306:3306 \
-e TZ="America/Whitehorse" \
-v "/opt/mariadb/conf/conf.d":"/etc/mysql/conf.d" \
-v "/opt/mariadb/backups":"/mnt/" \
--mount type=volume,dst=/var/run/mysqld,volume-driver=local,volume-opt=type=none,volume-opt=o=bind,volume-opt=device=/var/run/mysqld \
mariadb:latest
Run Code Online (Sandbox Code Playgroud)
我正在从本地计算机进行导入,我已经从容器内部复制了结果。
小智 12
mysql.user
正如有人已经提到的,这与10.4 中的表更改为视图有关。该问题和解决方案记录在 MariaDB 网站的MDEV-22127中。
解决方案是将以下两行添加到转储文件的顶部all-dbs.sql
:
DROP TABLE IF EXISTS `mysql`.`global_priv`;
DROP VIEW IF EXISTS `mysql`.`user`;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15505 次 |
最近记录: |