2012-02-28 220 views
0

我查看了建議的代碼,找不到解決問題的答案,因此我要求離開。MySQL錯誤 - SQLSTATE [42000]:語法錯誤或訪問衝突:1064

我正在使用MAMP v2.0.5,MySQL v5.5.9,PHP v5.3.6(根據MAMP,v5.3.8根據OS X)和FuelPHP v1.1,並且對我正在通過教程。部分教程需要使用「石油」來執行遷移以更新項目。定義了一個表後,遷移應用SQL來生成表。當我這樣做時,我得到了上述錯誤。查看了生成的代碼後,我找不到任何錯誤(也許我錯過了一些明顯的東西)。我正在使用PDO,並且檢查了我的sql_mode = '',它的確如此。從命令行和phpMyAdmin運行MySQL查詢證實了這一點。我認爲這是一個MySQL錯誤,而不是FuelPHP/oil的問題。有人有任何建議嗎?

生成的SQL:

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varhcar(50) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `group` int(11) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    `last_login` int(11) NOT NULL, 
    `login_hash` varchar(255) NOT NULL, 
    `profile_fields` text NOT NULL, 
    `created_at` int(11) NOT NULL, 
    `updated_at` int(11) NOT NULL, 
    PRIMARY KEY `id` (`id`) 
) DEFAULT CHARACTER SET utf8; 

錯誤:

bash:blog me$ oil refine migrate 
Error - SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varhcar(50) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `group` int(11) NOT NU' at line 3 with query: "CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `username` varhcar(50) NOT NULL, 
    `password` varchar(255) NOT NULL, 
    `group` int(11) NOT NULL, 
    `email` varchar(255) NOT NULL, 
    `last_login` int(11) NOT NULL, 
    `login_hash` varchar(255) NOT NULL, 
    `profile_fields` text NOT NULL, 
    `created_at` int(11) NOT NULL, 
    `updated_at` int(11) NOT NULL, 
    PRIMARY KEY `id` (`id`) 
) DEFAULT CHARACTER SET utf8;" in COREPATH/classes/database/pdo/connection.php on line 137 
+0

儘管我剛剛注意到「group」是一個保留字,把它改爲「user_group」,但我仍然得到相同的錯誤。 – 2012-02-28 00:30:12

+0

還有一點不需要修復,因爲MySQL會「自動修正」它。 'PRIMARY KEY id(id)'與'PRIMARY KEY(id)'實際上是一樣的。您無法選擇主鍵的名稱。默認情況下,它被稱爲「PRIMARY」。 – 2012-03-25 21:37:30

回答

2

你犯了一個錯字:

`username` varhcar(50) NOT NULL, 

應該是:

`username` varchar(50) NOT NULL, 
+0

謝謝。男孩我覺得自己像一個笨蛋,我一直在看那幾個小時! – 2012-02-28 00:32:33

+1

當mysql給出正確的語法錯誤* ....在'_ _'*附近使用時,只需檢查緊接在_ _之前的部分中的查詢或_ _中的第一個字符。錯誤日誌有幫助你 – 2012-02-28 00:35:12

+0

謝謝。在瞭解錯誤時,我特別不好。儘管很容易發現,但您的幫助非常感謝。 – 2012-02-28 00:38:54

相關問題