[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などの場合は、内部確認しないとイケないので、どちらも覚えておきたい。