81

当我尝试获取特定的 .sql 文件时,即'metropolises.sql'我之前从数据库创建并保存的文件,会显示以下错误:

无法打开文件“metropolises.sql”,错误:2

知道出了什么问题吗?

4

25 回答 25

103

假设您的意思是您尝试使用source命令从文本文件执行 SQL 语句,则给出的错误号似乎是从 POSIX 层传递的。

因此,使用这个资源,我们可以推断出错误值 2 表示“没有这样的文件或目录”。

简而言之,你走错了路。

尝试提供一个绝对路径,因为不清楚当前工作目录在 MySQL 服务器的上下文中是什么。您可能会假设它是您的 shell 的工作目录,但我们不应该期望这是真的。

于 2013-02-04T09:59:10.540 回答
38

只需使用文件的绝对路径,然后使用斜杠而不是使用反斜杠。

例子:

反斜杠:源 C:\folder1\metropolises.sql
正斜杠:源 C:/folder1/metropolises.sql

于 2013-06-06T07:19:07.540 回答
18

如果您在 Docker 内部使用 MYSQL

请注意,如果您在 docker 中运行 MySQL,那么您必须首先将转储复制到您的 MySQL docker 环境中。为此,请按照以下步骤操作

  1. 首先,通过以下方式检查并复制 MySQL docker 的容器 ID:

    sudo docker ps

  2. 使用以下命令将 SQL 转储文件复制到您的容器中:

    sudo docker cp /path/to/sql/file.sql MysqlDockerID:/

    如果您想将文件复制到 docker 内的任何其他目录/路径中,这会将转储文件复制到 docker 根文件夹中,将“MysqlDockerID:”之后的“/”替换为您想要的适当路径。

  3. 现在要在正在运行的容器中与 MySQL 交互,请运行以下命令:

    sudo docker exec -it MysqlDockerID bin/bash

  4. 现在通过以下方式使用终端连接到 MySQL:

    mysql -u yourUserName -p

    这将要求您输入密码。输入正确的密码以继续。

  5. 列出可用的数据库:

    show Databases;

    这将列出可用的数据库

  6. 假设您要将转储导入到的数据库名称是“MyDatabase”。切换到使用:

    use MyDatabase

  7. 现在您可以通过键入以下内容来导入文件:

    source file.sql

    如果您已将文件复制到根文件夹(使用步骤 2),请记住上述命令有效。如果您已将其复制到任何其他路径,请确保使用相同的路径

于 2020-06-19T07:20:06.890 回答
14

相关问题 我在运行源命令时遇到错误 2:即使文件名或文件路径中包含空格,文件名也不能用引号引起来。

于 2014-02-02T08:40:40.917 回答
14

它可能是您文件的文件路径。如果您不知道要使用的文件的确切位置,请尝试在 Finder 中找到您的文件,然后将文件拖到终端窗口中

mysql> SOURCE dragfilePathHere 
于 2017-04-13T05:33:32.087 回答
4

我首先到达文件

c:\windows>cd c:\akura\Db Scripts

c:\akura\Db Scripts>mysql -u root -p root

mysql>\. EXECUTER_NEW_USER.sql

here EXECUTER_NEW_USER.sql my file name
于 2014-02-04T10:48:44.393 回答
3

我在 Windows 上遇到了同样的错误。我用(在cmd:mysql -u root之后)解决了它:

mysql> SOURCE C:/users/xxx/xxxx/metropolises.sql;

确保键入正确的文件路径

于 2014-06-12T16:47:26.737 回答
3

如果您使用 vagrant,请确保该文件位于服务器上,然后使用该文件的路径。例如,如果文件存储在公用文件夹中,您将拥有

sql> source /var/www/public/xxx.sql

其中 xxx 是文件名

于 2017-08-05T21:42:25.883 回答
2

在我的 windows 8.1 和 mysql 5.7.9 MySQL Community Server (GPL) 上,我必须删除;文件路径后面的。

这失败了:来源E:/jokoni/db/Banking/createTables.sql;

这有效:源E:/jokoni/db/Banking/createTables.sql (没有终止,并且在路径中使用正斜杠而不是 Windows 的反斜杠)

于 2015-11-25T05:22:35.873 回答
1

我在使用此查询的 mysql 命令行中收到此错误:

source `db.sql`;

我将上面的内容更改为以下内容以使其工作:

source db.sql;
于 2015-06-29T08:58:46.470 回答
1

我遇到了这个问题,事实证明,如果您使用 wamp 服务器运行 mysql,则必须使用 wamp64 文件夹中的文件路径。所以当绝对路径是:C:/wamp64/www/foldername/filename.sql 你必须使用的路径是: www/foldername/filename.sql

于 2020-07-22T17:14:30.690 回答
1

在我的 Mac 上,这是唯一对我有用的解决方案。

https://stackoverflow.com/a/45530305/5414448


1 - Download the .sql file and remember it's location.

2 - Open your mysql from command prompt or terminal.

3 - Create a database with the same name as that of the database present in the .sql file (create database your_database_name)

4 - Now exit out from the mysql command line client

5 - Now try and execute this command =>

mysql -u your_username -p your_database_name < your_sql_file_with_complete_location

example -  mysql -u root -p trial < /home/abc/Desktop/trial.sql

here my .sql file is named trial and is present in the desktop, the database is also name trial

6 - You should now have your sql file imported to the corresponding mysql database.
于 2019-01-14T03:57:40.750 回答
0

可能是您使用的文件名或路径可能不正确

在我的系统中,我在 c:\ 创建了文件 abcd.sql

并使用命令mysql> source c:\abcd.sql 然后我得到了结果

于 2013-02-04T10:00:46.013 回答
0

对于 Mac 用户,您可以将路径指定为,

source /Users/YOUR_USER_NAME/Desktop/metropolises.sql;

*我假设您需要的文件source在您desktop的文件中,文件名是metropolises.sql


如果你键入,

source metropolises.sql

然后文件将在默认位置查找,

/Users/YOUR_USER_NAME/metropolises.sql;
于 2018-11-24T06:26:44.267 回答
0

传递完整路径不会出错,但如果文件夹有 MySQL 空格,则它无法识别 .sql 文件。我在 OS UNIX 上有 MySQL 8.0.21。

于 2020-07-20T10:04:28.767 回答
0

对我来说,这是因为该文件位于共享驱动器上,并且由于某种原因无法访问该路径。我剪切了文件并将其放在我的本地驱动器上的一个没有空格的路径中,它得到了解决。

于 2017-12-07T20:48:41.393 回答
0

解决方案 - 1)确保您位于root应用程序的文件夹中。例如 app/db/schema.sql。

解决方案 - 2) 打开/显示窗口上的文件夹,然后在 keywork ( space&& ) 文件源旁边的命令行中拖放。例如源用户/myMAC/app/db/schema.sqlsource

于 2019-09-19T01:50:03.890 回答
0

当我使用命令源并通过拖放它给出sql文件路径时,我得到了同样的错误。

然后我只需要删除默认情况下通过拖放出现的那些单引号,文件扩展名之前的一个空格,它就可以工作了。

解决方案:

source /home/xyz/file .sql ;(路径和文件扩展名前的空格)

于 2018-01-24T06:41:28.400 回答
0

我的解决方案是 Windows 中的文件权限。只需将文件的完全控制权交给所有用户,它就会起作用。导入后,将权限恢复到之前的状态。

于 2019-01-13T10:44:50.673 回答
0

我的 Mac 出现问题,因为路径中的一个文件夹(目录)名称中有一个空格。顺便说一句,空间被 \ 转义了,但 mySQL 不理解

于 2019-04-18T20:05:31.953 回答
0

如果您正在运行 dockerized MySQL 容器,例如来自此官方 Docker 镜像注册表的容器:https ://hub.docker.com/_/mysql/您也可能会遇到此问题

于 2016-05-11T15:33:30.343 回答
0

如果您使用的是 Debian 8 (Jessie) Linux,请尝试cd进入'metropolises.sql'. 运行mysql并执行SOURCE ./metropolises.sql;

基本上,尝试相对路径。我试过这个并且它有效。

于 2016-03-31T23:10:38.083 回答
0

我在我的 Xubuntu 桌面上遇到了这个问题。我通过重命名所有文件和文件夹来修复它,因此文件路径中没有空格。

于 2020-01-23T09:41:18.710 回答
-1

删除路径文件夹名称中的空格,它适用于我的 mac 路径。

(例如:将文件夹名称 MySQL Server 5.1 更改为 MySQLServer5.1)

于 2015-03-10T09:16:32.367 回答
-1

当我从 MySQL 控制台尝试时,我也收到了同样的消息。但是,当我打开命令提示符并执行相同的步骤时,它会起作用。

C:\Users\SubhenduD>cd ../
C:\Users>cd ../
C:\>cd \xampp\mysql\bin

C:\xampp\mysql\bin>mysql -u -root

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 68
Server version: 5.6.16 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved. 
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


mysql> use balticktravels;

mysql> source balticktravels.sql;
于 2016-09-12T05:40:42.290 回答