我正在尝试从http://dev.mysql.com/doc/employee/en/index.html安装示例数据库。我在我的 Windows 7 机器上安装了全新的 WAMP。MySql 目前没有密码设置。
当我尝试使用下面的命令运行 employees.sql 时,它会读取文件创建数据库和表,但它无法加载转储文件。给出的错误是:未能打开文件 load_titles.dump 错误 2
source C:\temp\employees_db\employees.sql
我正在尝试从http://dev.mysql.com/doc/employee/en/index.html安装示例数据库。我在我的 Windows 7 机器上安装了全新的 WAMP。MySql 目前没有密码设置。
当我尝试使用下面的命令运行 employees.sql 时,它会读取文件创建数据库和表,但它无法加载转储文件。给出的错误是:未能打开文件 load_titles.dump 错误 2
source C:\temp\employees_db\employees.sql
您需要将转储文件的完整路径放在Employees.sql 文件中。导入前在文本编辑器中编辑此文件。
示例:
'c:/user/download/load_departments.dump' 而不是 'load_departments.dump'。
下面通过将 (\) 更改为 (/) 为我工作
source C:/Users/pankaj/Downloads/test_db-master/show_elapsed.sql ;
您可以使用 MySQL 工作台进行安装。单击文件>运行 SQL 脚本,然后选择employees.sql
谢谢
首先,编辑employees.sql 并为每个.dump 文件插入完整路径名。
所以(就我而言),文本变为:
:
SELECT 'LOADING departments' as 'INFO';
source C:/temp/test_db-master/load_departments.dump ;
SELECT 'LOADING employees' as 'INFO';
source C:/temp/test_db-master/load_employees.dump ;
SELECT 'LOADING dept_emp' as 'INFO';
source C:/temp/test_db-master/load_dept_emp.dump ;
SELECT 'LOADING dept_manager' as 'INFO';
source C:/temp/test_db-master/load_dept_manager.dump ;
SELECT 'LOADING titles' as 'INFO';
source C:/temp/test_db-master/load_titles.dump ;
SELECT 'LOADING salaries' as 'INFO';
source C:/temp/test_db-master/load_salaries1.dump ;
source C:/temp/test_db-master/load_salaries2.dump ;
source C:/temp/test_db-master/load_salaries3.dump ;
:
其次,将反斜杠改为正斜杠。
然后我的命令行变为:
source C:/temp/test_db-master/employees.sql`
您需要在 employees.sql 文件中引用缺少的 *.dump 文件(请记住,您可能需要在成功创建“员工”数据库后自己导入它们):
这是丢失的 .dump 文件的链接: 链接到丢失的 .dump 文件
SELECT 'LOADING departments' as 'INFO';
source load_departments.dump ;
SELECT 'LOADING employees' as 'INFO';
source load_employees.dump ;
SELECT 'LOADING dept_emp' as 'INFO';
source load_dept_emp.dump ;
SELECT 'LOADING dept_manager' as 'INFO';
source load_dept_manager.dump ;
SELECT 'LOADING titles' as 'INFO';
source load_titles.dump ;
SELECT 'LOADING salaries' as 'INFO';
source load_salaries.dump ;
编辑employees.sql 文件并插入“*.dump”文件的完整路径以及最后一个“show_elapsed.sql”文件,使用“/”作为符号路径。替换默认的“\”。
我已经有这个问题2周了。已经尝试过上述解决方案,但没有任何帮助。我将我的工作台版本从 8.0.27 版本降级到 8.0.22 的较低版本,之后我可以通过运行脚本命令运行导入员工数据。我希望你觉得这有帮助。
首先,我们需要了解.sql
文件包含的内容。它包含 SQL 命令,因此.sql
文件更像是包含 SQL 命令(DDL、DML 等)的脚本。
我从这里下载了一个示例数据集。解压 zip 后,下面是文件的树状图:
C:\Users\chankruze\Downloads\test_db-1.0.7.tar\test_db-1.0.7\test_db>tree /f /a
Folder PATH listing
Volume serial number is EA88-380A
C:.
| Changelog
| employees.sql
| employees_partitioned.sql
| employees_partitioned_5.1.sql
| load_departments.dump
| load_dept_emp.dump
| load_dept_manager.dump
| load_employees.dump
| load_salaries1.dump
| load_salaries2.dump
| load_salaries3.dump
| load_titles.dump
| objects.sql
| README.md
| show_elapsed.sql
| sql_test.sh
| test_employees_md5.sql
| test_employees_sha.sql
| test_versions.sh
|
+---images
| ._employees.jpg
| employees.gif
| employees.jpg
| employees.png
|
\---sakila
README.md
sakila-mv-data.sql
sakila-mv-schema.sql
现在谈到你的问题。
假设我正在导入如下:
D:\>mysql -u root -p < C:\Users\chankruze\Downloads\test_db-1.0.7.tar\test_db-1.0.7\test_db\employees.sql
Enter password: ******
INFO
CREATING DATABASE STRUCTURE
INFO
storage engine: InnoDB
INFO
LOADING departments
ERROR at line 113: Failed to open file 'load_departments.dump', error: 2
从上面的日志中可以清楚地看出正在创建数据库结构,但它给出了错误,用于从转储文件加载数据,对你来说也是如此?
好吧,是时候调查了……
如果您仔细查看上面的日志,您会注意到我正在从D:
驱动器执行 mysql 以更通用,比如说从不存在提取文件的任何其他位置。看..有道理吗?好的。
现在,如果我为我打开employees.sql
位于的位置C:\Users\chankruze\Downloads\test_db-1.0.7.tar\test_db-1.0.7\test_db
,从第 112 行到第 127 行,我可以看到有命令source <xyz>.dump;
(如下所示)。
SELECT 'LOADING departments' as 'INFO';
source load_departments.dump ;
SELECT 'LOADING employees' as 'INFO';
source load_employees.dump ;
SELECT 'LOADING dept_emp' as 'INFO';
source load_dept_emp.dump ;
SELECT 'LOADING dept_manager' as 'INFO';
source load_dept_manager.dump ;
SELECT 'LOADING titles' as 'INFO';
source load_titles.dump ;
SELECT 'LOADING salaries' as 'INFO';
source load_salaries1.dump ;
source load_salaries2.dump ;
source load_salaries3.dump ;
source show_elapsed.sql ;
这些行负责将样本数据集(从另一台服务器转储)加载到该服务器。
如果这些行导致问题,很明显 mysql 无法找到这些文件。
您可以从上面目录的树视图中注意到,这些转储文件位于相同的位置employees.sql
(employees.sql
并且所有*.dump
文件都是同级文件)。因此在 sql 文件中,这些转储文件是相对引用的。
解决方案
我们可以通过两种方式解决这个问题:
1.推荐方法
从 cli 导航到同一文件夹后执行安装。(如下所示):
C:\Users\chankruze\Downloads\test_db-1.0.7.tar\test_db-1.0.7\test_db>mysql -u root -p < employees.sql
Enter password: ******
INFO
CREATING DATABASE STRUCTURE
INFO
storage engine: InnoDB
INFO
LOADING departments
INFO
LOADING employees
INFO
LOADING dept_emp
INFO
LOADING dept_manager
INFO
LOADING titles
INFO
LOADING salaries
data_load_time_diff
00:01:09
为什么我推荐这个?因为您只需要更改工作目录而不需要修改.sql
文件。
2.替代方法
好吧,您可以在文件中使用绝对路径,.sql
如下所示:
...
SELECT 'LOADING departments' as 'INFO';
source C:/Users/chankruze/Downloads/test_db-1.0.7.tar/test_db-1.0.7/test_db/load_departments.dump ;
...
注意:您需要在完整路径中替换\
为。/
不鼓励使用这种替代方法,因为将.sql
在其设备中使用该替代方法的其他用户需要对其进行编辑。
希望你有两个理由和它的解决方案;)