2011-05-22 59 views
3

我很困惑。從我已經在網上看到的引用,執行文本文件腳本的命令是這樣的:在MySQL命令行中執行.sql腳本的正確語法是什麼?

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

然而,當我跑了這一點,在命令行中說那裏有與MySQL語法(錯誤1064)錯誤。 我將query.sql腳本文件保存在C:程序文件... \ MYSQL \ MYSQL Server5.1 ..(無論哪個文件夾目錄包含mySQL命令行終端.exe)

然後我做到了這一點:

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

它也不起作用;命令行給了我同樣的錯誤。 mySQL版本與我見過的其他版本不同。正如你所看到的,你必須在每個查詢的末尾添加'\ g'。

請幫幫忙,讓我知道,如果描述不是很clear..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') 
) 
+1

錯誤消息並不是說你正在執行錯誤的腳本,它說該文件中的語句有語法錯誤。對於我們來說明爲什麼它是錯誤的以及如何解決它,請將該文件縮減爲[最小示例](http://sscce.org/)並將其包含在您的問題中。 – outis 2011-05-22 22:00:54

+0

1064:錯誤:1064 SQLSTATE:42000(ER_PARSE_ERROR) 消息:%s在%d行'%s'附近。以'1'開頭的錯誤是服務器端的錯誤。你的腳本工作正常,或者你的錯誤是以'2'開始的。像@outis說,這可能是您的查詢語法錯誤。 – Johan 2011-05-22 22:05:14

+0

@outis:那是我第一次想到的。但我後來懷疑它,因爲我幾乎從教程實踐博客上覆制粘貼了確切的SQL代碼。 – 2011-05-22 22:13:59

回答

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) 
) ; 
+0

@BennyTjia:爲了擴展這一點,MySQL中的單引號分隔了值,反引號分隔了[標識符](http://dev.mysql.com/doc/refman/5.1/en/identifiers.html)。語句中的'db1'是一個字符串,而(改變引號後反引號)'''db1 \''是一個名爲「db1」的表。 – outis 2011-05-22 23:10:39

+0

我試着改變代碼,現在我的錯誤是這個 - >錯誤:無法打開文件' 2011-05-22 23:28:58

+1

@BennyTjia,無論你在哪裏保存文件,只要你在導入時使用文件的完整路徑,你應該沒問題。要從客戶端的*內部導入文件,您應該*不*使用字符'<',而是直接使用該文件的路徑。請參閱我的答案以瞭解如何導入包含正確語法的SQL文件。 – rid 2011-05-23 11:53:43

5

你可以從與客戶端中運行SQL文件:

\. query.sql 

另外,如果您在客戶端是沒有準備好,你可以使用命令行執行以下操作:

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

不起作用,請參閱上面的我的評論。 – Johan 2011-05-22 22:07:45

+0

正確的,我也曾嘗試過,因爲這一次,我有「錯誤:2錯誤:沒有指定查詢」。 – 2011-05-22 22:11:12

+2

您不應該使用單引號(')來轉義表和字段名稱,而應該使用反引號(')。 – rid 2011-05-22 22:14:23

0

你需要指定DB這樣的聲明,如: -

USE(數據庫名)

所以上述替換(數據庫名稱)與數據庫的名稱

相關問題