我查看了建議的代碼,找不到解決問題的答案,因此我要求離開。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
儘管我剛剛注意到「group」是一個保留字,把它改爲「user_group」,但我仍然得到相同的錯誤。 – 2012-02-28 00:30:12
還有一點不需要修復,因爲MySQL會「自動修正」它。 'PRIMARY KEY id(id)'與'PRIMARY KEY(id)'實際上是一樣的。您無法選擇主鍵的名稱。默認情況下,它被稱爲「PRIMARY」。 – 2012-03-25 21:37:30