MySqlの最近のブログ記事

mysql work benchにてアクセスを行っていたところ
いままでアクセス出来ていたデータベースの情報が取得できない
(テーブル名あたりまでは取得できる)

表示されているログを見ると
Created with MySQL 50045, now running 50145. Please use mysql_upgrade to fix this error.
というエラーが発生している
エラーというかmysql_upgradeが必要だといわれいてるので

ルートユーザで
#mysql_upgrade -p
にてmysqlのrootパスワードを入力したところ
アップデート処理が走って、無事参照することが出来た

ここの処理は環境によってはrootユーザの必要は無いかもしれないが
ファイルのパーミッション等関係があるので
インストールの環境によって読み替えてもらいたい

もともとはyumのアップデートでmysqlをアップデートしたのが原因のようです

最近は全部UTF8で作成しちゃってて
PHPも文字コードの扱いが良くなっていたので
全然気にしなくなってしまったのですが
引き継いだ環境で表の文字がエスケープされてしまう
状態になったので変換が必要でした

PHP側とMySqlの文字コードが同一の場合意識しなくていいのですが
違う場合はコネクトした後に

set names ujis

等のクエリを発行する必要があります
EUCの場合 ujis
SJISの場合 sjis
UTF8の場合 utf8
を指定して

mysql_query("SET NAMES ujis")
のように指定する必要があります

一つのフィールド等をプログラム上で変更する場合は
mb_convert_encoding($str,'UTF8','SJIS')
のように行います
この場合はSJISの入力をUTF8に変換する
SJISよりもSJIS-winを設定する方が良い場合があります

またMySqlの設定を見る場合
/etc/my.ini等で設定してありますので
こちらを確認してください

コマンドで確認する場合は
mysql> show create database データベース名;
となります