MySQLでmysqldumpを実行すると'ujius'という意味不明のエラー
presented by 役に立つかもしれないBlog
未だにMySQLで文字コードをEUC-JPにして運用されているところも多いかと思いますが、文字コードを「ujis」にしているとデータベースデータをファイルに書き出す「mysqldump」コマンドにおいて奇妙な現象が起こってしまいました。
具体的には「ujius」という文字列を含んだエラーが出て実行できないという問題で、気持ち悪い現象なのですが、実際に起こったことなのでここで解決法も含めて報告しておきます。
エラー内容
root権限で以下のコマンドを実行したところ...
# mysqldump -u root -p --all-databases >fulldb.dump
次のようなエラーが出ました。
mysqldump: Character set 'ujius' is not a compiled character set and is not specified in the '/usr/share/mysql/charsets/Index.xml' file
うじうす? ゆーじうす? なんと読むのでしょうか。 「ujius」という文字コードは不明な文字コードですよ、と怒られました。 そんなの指定してませんって。
文字コードを再確認しても...
mysql> show variables like 'character_set%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | ujis | | character_set_connection | ujis | | character_set_database | ujis | | character_set_filesystem | binary | | character_set_results | ujis | | character_set_server | ujis | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
どこにも「ujius」という文字列はありません。
--default-character-set=binary オプションで解決
解決法は簡単で、オプションに「--default-character-set=binary」を加えるだけです。
これによって、書き出し時の文字化けも防ぐことができます。
# mysqldump -u root -p --all-databases --default-character-set=binary >fulldb.dump
「ujius」という奇妙な文字列については検索で調べてもキーワードがヒットしなかったので、同じ現象が発生する人はほぼいないのではないかと思いますが、とりあえずご報告まで。
余談ですが、今月号のWEB+DB PRESS Vol.54
は「WEBサービス即日開発」や「MySQL無停止化計画(この特集でレプリケーションの実験をしていて今回のエラーに遭遇。笑)」「ActionScript3.0 ライブラリ大集合」など、すばらしい特集のオンパレードなので売り切れないうちに購入するのがオススメですよ。
このページに関連のある記事はこちら
- さくらのVPSのPHP+MySQLを最新のものにアップデート。
- JavaScriptでDATETIME型の日付を得る方法
- MySQL(innoDB)でリレーション設定時に「インデックスは設定されていません」エラー
- MySQLでRANDOMな数値を得る方法
- MySQLのunique属性で大文字や小文字が区別されない問題を解決
- MySQLの「Can't create/write to file '/tmp/#sql****.MYI'」エラーを解決する!
- MySQLで画像をデータベース化、エラー発生時の3つの注意ポイント
- MySQLでHAVING指定したら「Unknown column ... in 'having clause'」エラー
- 検索エンジンのランキングアルゴリズムをMySQLで真似てみる
- MySQLで期間限定のデータを取得するSQL文を書いてみよう
- MySQLの絶対値計算ABS()で異常な数値になる理由



コメントフォーム