在 MySql 5.5.2.24 上安装 Employees 样例数据库?

6
我正在尝试从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
8个回答

5
你需要在 Employees.sql 文件中输入转储文件的完整路径。 在导入之前,请使用文本编辑器编辑此文件。
例如:
将 'c:/user/download/load_departments.dump' 替换为 'load_departments.dump'。

2
您可以使用MySQL Workbench进行安装。 点击“文件”>“运行SQL脚本”,然后选择employees.sql。
谢谢。

2
以下方法对我有效,将(\)更改为(/)即可。
source C:/Users/pankaj/Downloads/test_db-master/show_elapsed.sql ;

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`

0

您需要引用在employees.sql文件中缺失的*.dump文件(请注意,在成功创建“employees”数据库后,您可能需要自行导入它们):

以下是缺失.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 ;

0
首先,我们需要了解 .sql 文件包含什么内容。它包含 SQL 命令,因此 .sql 文件更像是一个包含 SQL 命令(DDL、DML 等)的脚本。
我从 这里 下载了一个样本数据集。在解压缩后,以下是文件的树形视图:
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,为了更通用,让我们假设从任何其他位置执行,而提取的文件不在那里。明白了吧?好。

现在,如果我打开位于 C:\Users\chankruze\Downloads\test_db-1.0.7.tar\test_db-1.0.7\test_dbemployees.sql 文件,从第 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文件时需要进行编辑。
希望您已经理解了原因和解决方案;)

0

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


0

我已经遇到这个问题两周了。尝试了提到的解决方案,但都没有帮助。我将我的Workbench版本从8.0.27降级到更低的8.0.22版本,之后我就能够通过运行脚本命令导入员工数据了。希望这对你有所帮助。


目前你的回答不够清晰,请编辑并添加更多细节,以帮助其他人理解它如何回答问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接