linux里docker镜像mysql运行sql脚本时出现Failed to open file ‘/home/mydatabase.sql’, error: 2的解决
此文章的前提是已经把sql文件复制到docker里了
今天在用CentOS7里在docker启动MySQL运行sql脚本文件时出错,错误信息如下:
mysql> source /home/mydatabase.sql;ERROR: Failed to open file '/home/mydatabase.sql', error: 2
上网查了下,错误原因应该是路径匹配的问题,默认路径是MySQL的安装路径下,所以MySQL只能访问到它源目录下的所有目录和文件,解决方式是在登录时直接指定要运行的sql脚本文件,具体步骤如下:
先登录一下MySQL,创建好要用到的数据库,我创建的数据库名称是mydatabase1
root@4994c041aa3a: mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7Server version: 5.7.36 MySQL Community Server (GPL)Copyright (c) 2000, , Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> create database mydatabase1;
退出MySQL,用运行sql脚本文件的方式重新登录
# 这里的mydatabase1就是第一步创建好的数据库,'<'后面的文件就是要运行的sql脚本文件路径root@4994c041aa3a: mysql -uroot -p mydatabase1 < /home/mydatabase.sql
重新登录进去后发现文件已运行成功
root@4994c041aa3a: mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g.Your MySQL connection id is 7Server version: 5.7.36 MySQL Community Server (GPL)Copyright (c) 2000, , Oracle and/or its affiliates.Oracle is a registered trademark of Oracle Corporation and/or itsaffiliates. Other names may be trademarks of their respectiveowners.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.mysql> show databases;+--------------------+| Database |+--------------------+| information_schema || mysql || performance_schema || mydatabase1 || sys|+--------------------+5 rows in set (0.00 sec)mysql> use mydatabase1;Reading table information for completion of table and column namesYou can turn off this feature to get a quicker startup with -ADatabase changedmysql> show tables;+-----------------------------+| Tables_in_mydatabase1 |+-----------------------------+| t_disk || t_crl || t_menu || t_user |+-----------------------------+4 rows in set (0.00 sec)
补充:
# CentOS7下docker启动MySQL命令docker pull mysql:5.7docker run -tid --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 mysql:5.7docker exec -it mysql /bin/bashmysql -uroot -pEnter password: