1. TOP
  2. Webサービス
  3. MySQL
  4. あまりに焦りすぎてMySQLのsyntax errorが見抜けなかった話。コードは落ち着いて確認しましょう

あまりに焦りすぎて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文)見るようにします」、はい。