2013-05-17 20 views
1

我得到這個錯誤,當我嘗試運行軌跡數據的基礎MySQL服務器版本正確的語法使用近「(」身份證')

您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的手冊,使用近「(」身份證「) )TYPE = MyISAM的AUTO_INCREMENT = 6」在第4行

DROP TABLE IF EXISTS `categories`; 
CREATE TABLE `categories` (
`id` int(5) NOT NULL auto_increment, 
    `category` varchar(50) NOT NULL default '', 
    PRIMARY KEY ('id') 
) TYPE=MyISAM AUTO_INCREMENT=6 ; 
+0

好奇的事情是在定義「PRIMARY KEY」列的左括號之前發生的錯誤:在遇到字符串引號字符'''時,會期望它在該括號之後發生。這意味着除了[由@bluefeet引用的]之外,還有其他一些問題(http://stackoverflow.com/a/16607483)。 'PRIMARY KEY'和'('id')'之間的字符是什麼?(在你的問題中,它們是空格字符U + 0020,但是也許你的代碼在現實中有一些其他的奇怪現象)? – eggyal

回答

2

你的代碼的兩個問題正確的語法,刪除主鍵聲明中圍繞id的單引號。你可以使用反引號或什麼都不用。

並改變Type=MyISAM到:

ENGINE=MyISAM 

MySQL Docs

舊術語類型被支持作爲ENGINE向後兼容性的同義詞,但發動機是優選的術語和TYPE已棄用。

所以腳本將是:SQL Fiddle with Demo

+0

+1好點,找到主要錯誤後我重讀它。 – fancyPants

2

您正在使用'這裏

PRIMARY KEY ('id') 

id在這種情況下一個字符串,而不是列名

DROP TABLE IF EXISTS `categories`; 
CREATE TABLE `categories` (
`id` int(5) NOT NULL auto_increment, 
    `category` varchar(50) NOT NULL default '', 
    PRIMARY KEY (id) 
) ENGINE=MyISAM AUTO_INCREMENT=6 ; 

見。改用反引號。

PRIMARY KEY (`id`) 
+0

另請注意bluefeet的'ENGINE'問題,而不是'TYPE'。 – fancyPants

1

試試這個:

DROP TABLE IF EXISTS `categories`; 
CREATE TABLE `categories` (
`id` int(5) NOT NULL auto_increment, 
    `category` varchar(50) NOT NULL default '', 
    PRIMARY KEY (`id`) 
) ENGINE=MYISAM AUTO_INCREMENT=6 

的問題是,PRIMARY KEY ('id')應該使用反引號insted的報價

+0

不會有相同的錯誤 – steve

+0

@steve現在你可以試試這個嗎?它會工作......這是因爲沒有指定ENGINE。 – 2013-05-17 11:31:09

-2

1064您的SQL語法錯誤;檢查對應於你的MySQL服務器版本使用附近的正確語法手冊 'FROM disc_disc WHERE disc_id = NULL' 位於第1行SQL = SELECT disc_id,disc_name從disc_disc WHERE disc_id = NULL

// zjistit jmeno diskuse 
$disc_name = ""; 
$sql = sprintf("SELECT disc_id, disc_name, " . 
    "FROM disc_disc " . 
    "WHERE disc_id=%s", 
quote_smart($disc_id)); 
$db->setQuery($sql); 
$rec = $db->loadObjectList(); 

if ($db->getErrorNum()) { 
    JError::raiseWarning(500, $db->stderr()); 
} 
+0

你甚至讀過這個問題嗎? – maxhb

+0

這並沒有解決問題,應該刪除。 – GrizzlyManBear

相關問題