MySQL的:源错误2?


73

当我尝试为特定的.sql文件(即'metropolises.sql'我以前从数据库创建和保存)的源文件时,显示以下错误:

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

知道出了什么问题吗?


1
“尝试获取特定的.sql文件的源”是什么意思?
Lightness Races in Orbit

我在数据库中创建了一个表。现在,为了创建数据,我输入了SOURCE metropolises.sql。进入终端,但是出现了如上所述的错误消息。可以肯定,所创建的表中没有错误。
笨拙的大猩猩

Answers:


97

假设你的意思是你要使用source命令,以从文本文件执行SQL语句,错误数给出似乎是通过从POSIX层传递。

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

简而言之,您走错了路。

尝试提供一个绝对路径,因为不清楚您的MySQL服务器上下文中当前的工作目录是什么。您可能以为这是您外壳程序的工作目录,但是我们应该期望这是事实并不明显。


1
谢谢。我知道这很愚蠢,但是如何找到我在数据库中创建的文件?
笨拙的大猩猩

1
提供绝对路径。完整路径。包括目录。
Lightness Races in Orbit

7
另外请注意,请勿将完整路径放在引号中。 SOURCE "/var/test.sql";将失败,并显示错误代码2,并且SOURCE /var/test.sql可以正常工作(假设在该位置存在test.sql)。
Will Martin

是的,只是sql文件的一个简单拼写错误就触发了我的问题
Manuel Hernandez

1
为什么他们不只是抛出“没有这样的文件或目录”,而不是抛出一个错误的错误代码编号.. ????
黑色

36

只需使用文件的绝对路径,然后使用斜杠代替反斜杠即可。

例:

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


1
您是否知道是否可以将路径存储在全局变量或局部变量(例如@PATH_TO_THE_FILE)中,并像“ source @PATH_TO_THE_FILE”中那样使用source命令(这不起作用)?谢谢。
aloplop85 2013年

1
没有为我工作。尽管使用正斜杠修改为绝对路径,但仍显示相同的错误。有什么建议?
阿基尔

14

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


2
人们倾向于认为,在路径中使用空格引号是必要的。真是头疼!
PavoDive

11

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

mysql> SOURCE dragfilePathHere 

伯罗,您是节省生命的人!我的问题是绝对不清楚的,原来我的文件名为“ file.sql.sql”,但是它没有显示在GUI中,仅当我将其拖放到cmd上时才出现
Sarah

6

如果您在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步),则上述命令有效。如果您已将其复制到任何其他路径,请确保使用相同的路径来代替


这是一个救生员。顺便说一句,要注意的是,对于第2步,/如果要除根路径以外的其他文件夹,则必须在其中明确创建一个文件夹。不这样做将导致看起来像这样的错误Error: No such container:path: <container_id>:\<folder_name>
SamuelDev

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

3

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

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

确保输入正确的文件路径


3

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

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

其中xxx是文件名


2

在Windows 8.1和mysql 5.7.9 MySQL社区服务器(GPL)上,我必须删除;文件路径后的。

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

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


1

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

source `db.sql`;

我将以上内容更改为以下内容以使其起作用:

source db.sql;

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.

1

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


0

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

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

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


实际上,我正在ssh上进行操作。如何查看在特定数据库上创建的文件的目录?
笨拙的大猩猩

@PengHuiHow-您知道该文件的实际路径吗?
Fathah Rehman P

0

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

基本上,尝试相对路径。我试过了,它有效。


0

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


0

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


0

当我使用命令源并通过拖放n给出sql文件路径时,出现了相同的错误。

然后,我只需要删除默认情况下通过拖放出现的那些单引号,即文件扩展名前的空格即可。

溶解

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


0

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

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

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


如果您输入

source metropolises.sql

那么该文件将在默认位置查找,

/Users/YOUR_USER_NAME/metropolises.sql;

0

对我来说,解决方案是Windows中的文件权限。只要将文件的完全控制权提供给所有用户,它就会起作用。导入后,将权限恢复为之前的权限。


0

我在Mac上遇到问题,因为路径中的文件夹(目录)名称之一在名称中带有空格。顺便说一句,空格用\来转义,但是mySQL无法理解


0

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

解决方案-2)打开/显示窗口上的文件夹,然后&&在命令行中将键盘拖放到keywork sourcespace)文件源旁边。例如源User / myMAC / app / db / schema.sql


0

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


0

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


-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;

-2

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.