MYSQLは久しぶり

以前勤めていた会社で Linux 用のデータベース管理システム PostgreSQL を使っていたので、慣れていると思ったのですが、ちょっと自信をなくす事態が。

今勤めている大学では、WordPress で MySQL を使っており、他にも外部に作成を依頼したシステムでフリーのデータベースを利用しているようです。
MySQLなんて、PostgreSQL とあまり変わらないと思っていたので、ちょこちょこ使うにはいいかなと思い、手をだしたところ、はまってしまいまいした。

テーブル名や要素名を日本語にしたのが敗因です。
前の会社で見た、Windows Server に実装した Oracle Database 用の日本語のテーブルがわかりやすくていいな、と思っていたので、日本語を使ってしまいました。
(PostgreSQLを使うときは、テーブル名や要素名を英語にしていました)

次のミスがあり、エラーでまくりです。

(1) /etc/my.cnf に、[mysql]の文字設定記述が抜けていた。
[client]と[mysqld]だけに設定していて、PHP で作ったWeb画面では文字化けしてなかったのですが、コマンドラインからはだめみたいです。

(2) 「’」でくくる必要はなかった
ネットで調べたらテーブル名や要素名に日本語を使った場合は、「’」でくくるといい、という記事を見つけたので、そのとおりにしたらエラーになった。CentOSでやる場合は、不要です。

(3) 要素名を改行で区切っただけではダメで空白が必要
テキストファイルに「,」で区切って、直後に改行を入れたSQLを作ったのですが、「,」と改行だけではだめで、「,」と改行の間に半角の空白が必要でした。

(4) 空白が2バイト文字だったりする
テキストエディタでSQLを作った際、半角の空白と倍角の空白が混じってしまい、倍角の空白でエラーになっていました。もちろん半角の空白にすれば問題ありません。

(5) 予約もつい使ってしまった
日本語がだめで英語で要素名を作った際、予約語をそのまま使ってしまい、そのためエラーになってしまった。安易な命名はやはりダメでしょうね。

これを根気強く直すと、動くようになりました。このエラーメッセージ、解りにくいですね。
違うエディタで確認すればすぐ解ったようなミスもあったので、やり方も見直した方がいいかな。
(試しに、と思ったので vi でさらさらっと書いたのが、結局敗因だったのかも。)