あまりに焦りすぎてMySQLのsyntax errorが見抜けなかった話。コードは落ち着いて確認しましょう
目次
さて。
今回はデータベースのMySQLのお話です。初心者あるあるの文法エラーネタですが、何のひねりもありません。まあ強いて言うなら、
- 「コード(SQL文)はよく見ましょう」とか
- 「どうしても分からない時は時間を置いてから確認しましょう」
という教訓めいたものです。このときなぜか「早くなんとかせなアカン!」と思って焦っていて、自力でエラーを見つけることはできませんでした。
これぐらい分からなければ、Webアプリも何もあったもんじゃないんですが、自分自身への戒めも込めて書き残しておきます。
問題の内容
MySQLのデータベースにテーブルを作ってinsert文でデータを追加しようとするとシンタックスエラーが出ます。SQL文が間違っているのかと思いGoogle検索や本で調べたりしましたが、なぜ文法エラーが発生するのか分かりません。
// membersテーブル create table members ( id int not null auto_increment primary key, created datetime not null, modified datetime not null, username varchar(255), password varchar(40) ); desc members;
+———-+————–+——+—–+———+—————-+
| Field | Type | Null | Key | Default | Extra |
+———-+————–+——+—–+———+—————-+
| id | int(11) | NO | PRI | NULL | auto_increment |
| created | datetime | NO | | NULL | |
| modified | datetime | NO | | NULL | |
| username | varchar(255) | YES | | NULL | |
| password | varchar(40) | YES | | NULL | |
+———-+————–+——+—–+———+—————-+
// データの追加 insert into members (created, modified, username, password) values (now(), now(), 'hoge1', 'foo1'), (now(), now(), 'hoge2', 'foo') );
問題の解決
「問題の解決」というか、何というか、ここまで読んでくださったみなさん、ありがとうございます。すでに一瞬でお分かりですよね。
// データの追加において、3行目または4行目の’)’がエラーの原因です。これを除けばいいだけです。これしきのことで質問掲示板に投稿をしてしまった。
落ち着いてみれば、自分自身でも「アホやな~」と思うんですが、人間焦ると周りが見えなくなっちゃいますね~。見えなさすぎと言われるかもしれませんが、そのときはやはり「時間を置いてからコード(SQL文)見るようにします」、はい。