LoginSignup
1
1

More than 3 years have passed since last update.

incorrect database name '#mysql50#.***' when selecting the database のエラー

Posted at

無効なデータベースが選択されました というエラー。自分は以下がでました

incorrect database name '#mysql50#.ssh' when selecting the database

で、実際データベース一覧見てみてもこいつがいます。なんだこれ

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| #mysql50#.ssh      | <- これ
| mysql              |
| performance_schema |
| test               |
+--------------------+

原因

mysqlのディレクトリの中にディレクトリを作ると、データベースと誤認されてこれがでます。
私の場合は .ssh ですね。

$ ls -la /var/lib/mysql/

...
drwx--x--x.  2 mysql mysql     4096 Jun 20  2017 mysql
srwxrwxrwx   1 mysql mysql        0 Dec  9 13:00 mysql.sock
drwx------.  2 mysql mysql     4096 Jun 20  2017 performance_schema
drwxr-xr-x   2 mysql mysql     4096 Dec 23 11:28 .ssh
drwxr-xr-x.  2 mysql mysql     4096 Jul  3  2017 test

.ssh ディレクトリがあります。そういえば作りました。これをなんとかしないといけません。

mysqlのディレクトリがどこにあるかわからない場合は、 SHOW VARIABLES LIKE 'datadir'; を実行することで場所がわかります

mysql> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value           |
+---------------+-----------------+
| datadir       | /var/lib/mysql/ |
+---------------+-----------------+

対処法

3つあります。

1. 消す

これがあるからデータベースと誤認されているわけです。消していいならしまいましょう
ただ、できた原因とかわかってないとまだ出来上がる可能性はあります。

rm -rf /var/lib/mysql/.ssh

2. このディレクトリを無効化する

my.cnf に、このディレクトリを無効化してという記述をすることで無視できるようになります。

vi /var/lib/mysql/my.cnf

ignore-db-dir='.ssh' <- これを追記

再起動して読み込ませ、一覧から消えればOK

$ /etc/init.d/mysqld restart

3. クエリを見直す

このエラーがでるクエリを発行しているということは、そのディレクトリを見に行ってしまうようなクエリを書いているということです。

僕の場合は以下のクエリを使ってパーティションの確認をしようとしてエラーが出ました。

SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS;

これでなんで見てしまうかというと、条件として TABLE_SCHEMA を指定していなかったのでそれが原因でした。
見たいテーブルだけ指定してあげます

SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME, PARTITION_ORDINAL_POSITION, TABLE_ROWS
FROM INFORMATION_SCHEMA.PARTITIONS
WHERE TABLE_SCHEMA = 'test';

これで .ssh テーブルを見に行かなくなるのでエラーは消えました


1番は消していいものかの精査が必要
2番は再起動が必要(本番稼働サービスなどはやりたくない)
3番はクエリによる

とのことで、どの解決方法がいいか考えて適宜使っていくのがいいと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1