5

我正在尝试从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
4

8 回答 8

5

您需要将转储文件的完整路径放在Employees.sql 文件中。导入前在文本编辑器中编辑此文件。

示例:

'c:/user/download/load_departments.dump' 而不是 'load_departments.dump'。

于 2018-05-12T01:25:47.963 回答
1

下面通过将 (\) 更改为 (/) 为我工作

source C:/Users/pankaj/Downloads/test_db-master/show_elapsed.sql ;
于 2019-08-04T22:42:40.853 回答
1

您可以使用 MySQL 工作台进行安装。单击文件>运行 SQL 脚本,然后选择employees.sql

谢谢

于 2019-12-27T13:10:02.843 回答
1

首先,编辑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`
于 2019-11-26T23:19:46.310 回答
0

您需要在 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 ;
于 2015-04-03T18:36:10.530 回答
0

编辑employees.sql 文件并插入“*.dump”文件的完整路径以及最后一个“show_elapsed.sql”文件,使用“/”作为符号路径。替换默认的“\”。

于 2020-03-27T16:06:16.373 回答
0

我已经有这个问题2周了。已经尝试过上述解决方案,但没有任何帮助。我将我的工作台版本从 8.0.27 版本降级到 8.0.22 的较低版本,之后我可以通过运行脚本命令运行导入员工数据。我希望你觉得这有帮助。

于 2022-02-16T09:47:21.330 回答
0

首先,我们需要了解.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.sqlemployees.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在其设备中使用该替代方法的其他用户需要对其进行编辑。

希望你有两个理由和它的解决方案;)

于 2021-12-06T16:47:02.647 回答