Web系のこととかー。

yumの自動アップデートでMySQLが5.0から5.1へアップデートされたのだけど、なぜかデータベースへアクセス出来ない不具合が。データベース名を確認してみると…

mysql>show databases;
+--------------------+
| Database           |
+--------------------+
| #mysql50#db_name   |
+--------------------+

あれ?データベース名の頭に「#mysql50#」なんてものが付いている…。調べてみると、どうやらデータベース名に「-」と半角ハイフンが入っている場合にそうなるみたい。

たとえば、MySQL 5.0 のデータベースの名前が a-b-c の場合、その名前には ‘-’ 文字のインスタンスが含まれています。5.0 では、データベースディレクトリにも a-b-c という名前が付けられますが、必ずしもすべてのファイルシステムで安全とはいえません。MySQL 5.1 以降では、ファイルシステムに依存しないディレクトリ名を生成するために、同じデータベース名が a@002db@002dc としてエンコードされます。

MySQL インストールが旧バージョンから MySQL 5.1 以降にアップグレードされると、サーバーでは a-b-c などの古い形式の名前が #mysql50#a-b-c として表示されるため、#mysql50# の接頭辞を付けて名前を参照する必要があります。この場合は、UPGRADE DATA DIRECTORY NAME を使用して、データベースディレクトリ名を現在のコード化形式に再エンコードするようサーバーに明示的に指示します。
http://dev.mysql.com/doc/refman/5.1-olh/ja/alter-database.html

解決方法

#mysql_upgrade -u root

と mysql_upgrade を実行すると自動的に修正してくれる。

§291 · 2月 9, 2011 · MySQL_PostgreSQL · · [Print]

Leave a Reply