Docker MySQL导入.sql文件(官方Sakila示例库),解决Failed to open file xxx.sql, error: 2

Docker MySQL导入.sql文件(官方Sakila示例库),解决Failed to open file

Sakila示例库

Sakila示例库是MySQL官方提供的示例数据库,其中提供了很多数据表及数据,可以让我们很方便的学习MySQL。具体见https://dev.mysql.com/doc/sakila/en/

下载下来后导入也很方便,官网上说只要两条命令就可以了:

mysql> SOURCE C:/temp/sakila-db/sakila-schema.sql;
mysql> SOURCE C:/temp/sakila-db/sakila-data.sql;

SOURCE命令后指定的是文件的绝对路径。

本人使用的是Docker提供的MySQL5.7镜像,发现这两条命令会报错:

ERROR: 
Failed to open file '/XXX/sakila-db/sakila-schema.sql', error: 2

网上有看到说Linux下必须在MySQL工作目录下的.sql文件才可以被成功导入,可以通过在指定目录下打开mysql来解决。Docker下的应该也是一样,但是本人对Docker并不是很熟悉,经过一些尝试,找到了一种简单的解决方法,就是利用docker cp命令将文件复制到工作目录下,下面将具体介绍。

Failed to open file解决方法

这里介绍的是 Docker 下 MySQL 容器Failed to open file XXX.sql的解决方法

Docker 下的 MySQL 只能导入其工作目录下的.sql文件,可以通过docker cp命令将 sakila-db 文件复制到其工作目录下:

docker cp /var/lib/mysql/sakila-db mysql5.7:/

mysql5.7是我 mysql 的容器名。

然后根据工作目录的相对路径,就可以成功导入了:

mysql> source /sakila-db/sakila-schema.sql;
mysql> source /sakila-db/sakila-schema.sql;

另外,Docker 拉的 MySQL 镜像中本身就有 sakila-db 这个文件,就不需要再去下载了。这个文件存放在 datadir 指定的目录下:

mysql> show global variables like "%datadir%";
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.02 sec)

查看这个目录:

[root@localhost ~]# ls -l /var/lib/mysql
总用量 122952
drwxr-xr-x. 2 bejsoiv bejsoiv       72 6月   5 2020 sakila-db
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值