MySQLにテーブルを作成しようとしてクエリを実行したら
「#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 ‘(クエリ)’ at line 1」
というエラーが発生。
1064エラーは、SQLの文法ミスってこと。。
先に原因を挙げとくと、囲み文字に「’」アポストロフィーを使っていたためである。
環境は Ubuntu12.10、MySQL5.5、phpmyadmin3.3。
1. アポストロフィーとシングルクォートの違い
アポストロフィーとシングルクォートは厳密には違うようだ。
アポストロフィーは、単体で使用する省略記号のこと(例、can’t)。
シングルクォートは、2つ一組で使用する引用符のことで、シングルクオーテーションを略したもの(例、私はwebサービスを作成`できる`)。
アポストロフィーは「Shit + 7」で、シングルクォートは「Shift + @」で入力できる。
2. MySQLの囲み文字にはシングルクォート
MySQLにて、テーブルを作成するクエリで比較してみる。
1. テーブルとカラムを何も囲っていない場合のクエリ。実行される。
create table test1 ( id int(11), title varchar(255));
2. テーブルとカラムを「アポストロフィー」で囲ったクエリ。エラーとなる。
create table ‘test2’ ( ‘id’ int(11), ‘title’ varchar(255));
3. テーブルとカラムを「シングルクォート」で囲ったクエリ。実行される。
create table `test3` ( `id` int(11), `title` varchar(255));
結論としては、SQL文にはアポストロフィーは使用せず、全てシングルクォートでやる(マイグレーションどうするんだろ・・・)。
これ以外の方法あったら教えてください。
コメント