[Mysql] ハイフン付きのDB名とTABLE名の対応

仕事で使っていたMysqlがある時、特定のテーブルにアクセスした時に結果が返ってこない事があった。 色々調べてみて、テーブル名にハイフンが入っていることが原因と分かった。 とりあえず解決したので、その解決方法と、残念な環境の事について残しておきます。

ハイフン付きのテーブルへの対応

ググってみると、ハイフン付きのテーブルは、'(クォーテーション)または、"(ダブルクォート)で囲うと、問題なく実行できると書かれていたが、以下のようなエラーが出た。 SELECT * FROM 'sample-table' ERROR 1064 (42000): 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 '"sample-table"' at line 1 42000番エラーは、どうやらバージョン違いのために起きるエラーなのだそうだ。 参考: MySQLでよく見かけるエラーの発生原因と対策方法

解決方法

SELECT * FROM `sample-table` バッククォートで囲ってあげると問題なく処理できた。 でも、最新のバージョンでもこのエラーは出るのだが、クォーテーションで処理できるのは、どのバージョンの話なのだろう? とりあえず、バージョン確認の方法も残しておくことにする。

Mysqlのバージョン確認

2023年8月時点での、Mysqlの最新バージョンは、8.1.0。 今現在使っているとある会社のMysqlのバージョンは、5.7.38。

ログインしているサーバー側での確認

mysql --version

mysql内部コマンドでの確認

select version(); +------------+ | version() | +------------+ | 5.7.38-log | +------------+ 1 row in set (0.00 sec) AWSなどの場合は、内部確認しないとイケないので、どちらも覚えておきたい。