【问题标题】:what is the correct syntax for executing .sql script in MySQL command line?在 MySQL 命令行中执行 .sql 脚本的正确语法是什么?
【发布时间】:2011-08-30 18:28:21
【问题描述】:

我很困惑。从我在网上看到的参考资料来看,执行文本文件脚本的命令是这样的:

mysql> --user=root --password=admin --database=zero <query.sql

但是,当我运行它时,命令行显示 mySQL 语法有错误(错误 1064)。 我将 query.sql 脚本文件保存在 C:program files...\MYSQL\MYSQL Server5.1..(包含 mySQL 命令行终端 .exe 的任何文件夹目录)中

然后我这样做了:

 mysql> USE db1 \g
 mysql> source <query.sql \g

它也不起作用;命令行给了我同样的错误。我拥有的 mySQL 版本与我见过的其他版本不同。如您所见,您必须在每个查询的末尾添加“\g”。

请帮忙,如果描述不是很清楚,请告诉我..thx

编辑: 所以这是我在 query.sql 中的代码:

CREATE TABLE IF NOT EXISTS 'db1'(
'id' int(255) NOT NULL auto_increment,
'date' date NOT NULL,
'title' varchar(255) NOT NULL,
'introtext' text NOT NULL,
'maintext' text NOT NULL,
PRIMARY KEY ('id')
)

【问题讨论】:

  • 错误信息并不是说你执行脚本错误,它说文件中的语句有语法错误。为了让我们准确说出错误的原因以及如何修复它,请将文件缩减为 minimal sample 并将其包含在您的问题中。
  • 1064: 错误:1064 SQLSTATE: 42000 (ER_PARSE_ERROR) 消息:%s 在第 %d 行的 '%s' 附近。以“1”开头的错误是服务器端错误。您的脚本工作正常,或者您的错误以“2”开头。就像@outis 所说的,这可能是您查询中的语法错误。
  • @outis :这是我第一次想到的。但我随后对此表示怀疑,因为我几乎从教程练习博客中复制粘贴了确切的 SQL 代码..
  • @Benny:删除引号:'db1' 并且仅在必要时使用反引号 `db1`
  • 我建议你使用Query Browser或者Workbench来启动,这样你就有了一个图形界面,可以使用File->Open Script。

标签: mysql mysql-error-1064 sql-scripts


【解决方案1】:

您可以在客户端中运行 SQL 文件:

\. query.sql

或者,如果您还没有在客户端中,您可以从命令行使用以下命令:

mysql --user=root --password=admin --database=zero < query.sql

【讨论】:

  • 对,我之前也尝试过..对于这个,我有“错误:2错误:没有指定查询”。
  • 您不应使用单引号 (') 转义表和字段名称,而应使用反引号 (`)。
【解决方案2】:

删除引号:'db1'。必要时使用反引号,例如对于名为 date 的字段,以从类型 date 中识别它。并在语句末尾添加;

CREATE TABLE IF NOT EXISTS db1(
  id int(255) NOT NULL auto_increment,
  `date` date NOT NULL,
  title varchar(255) NOT NULL,
  introtext text NOT NULL,
  maintext text NOT NULL,
  PRIMARY KEY (id)
) ;

【讨论】:

  • @BennyTjia:为了展开这一点,MySQL 中的单引号分隔值,而反引号分隔 identifiers。语句中的'db1' 是一个字符串,而(将引号更改为反引号后)`db1` 将是一个名为“db1”的表。
  • 我尝试更改代码,现在我遇到的错误是 -> 错误:无法打开文件 '
  • @BennyTjia,无论您将文件保存在何处,只要您在导入时使用文件的完整路径,就可以了。要从客户端内部导入文件,您应该使用字符&lt;,而是直接使用文件的路径。请参阅我的回答,了解如何导入包含正确语法的 SQL 文件。
  • @ypercube 我也有类似的问题。你能帮我吗?我正在尝试运行在 MySQL 数据库中创建和加载表的外部 sql 文件。这是链接:stackoverflow.com/questions/22411995/…
【解决方案3】:

您需要指定数据库,因此如下语句:-

使用(数据库名称)

所以上面的 (DATABASE NAME) 替换为数据库的名称

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-13
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 2011-10-19
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多