2012-02-28 19 views
0

私は提案されたコードを調べましたが、問題を解決する回答を見つけることができないため、尋ねています。MySQLエラー - SQLSTATE [42000]:構文エラーまたはアクセス違反:1064

私は、MAMP v2.0.5、MySQL v5.5.9、PHP v5.3.6(MAMP、OS Xによるv5.3.8による)とFuelPHP v1.1を使用しています。フレームワークの新機能私は、チュートリアル。チュートリアルの一部には、プロジェクトを更新するための移行を実行するための「オイル」の使用が必要です。表を定義すると、移行によってSQLが適用されて表が生成されます。私がそうすると、私は上記のエラーを取得します。生成されたコードを見て、私は何かエラーを見つけることができません(多分私は何かが分かりません)。私はPDOを使用しており、私のsql_mode = ''もチェックしています。コマンドラインからphpMyAdminを実行すると、これが確認されます。私はこれが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"に変更したことに気がつきましたが、私はまだ同じエラーが発生します。 –

+0

MySQLは修正を必要としない点もあります.MySQLは「自動修正」します。 'PRIMARY KEY id(id)'は実際には 'PRIMARY KEY(id)'と同じです。主キーの名前は選択できません。これはデフォルトでは 'PRIMARY'と呼ばれています。 –

答えて

2

あなたがタイプミスをした:

`username` varhcar(50) NOT NULL, 

は次のようになります。

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

ありがとうございます。少年は私はplonkerのように感じる、私は何時間もそれを見てきました! –

+1

mysqlが正しい構文が* _ _ '*の近くで使用されるようにするには、_ _の直前の部分、または_ _の最初の文字を確認してください。エラーログはあなたに役立ちます –

+0

ありがとうございます。私はエラーを理解することになると特に悪いです。あなたの助けは、非常に簡単に見つけることができましたが、非常に高く評価されました。 –

関連する問題