2011年9月14日水曜日

MySQLの「SET NAMES latin1」に撃沈。

MySQLの「SET NAMES latin1」に撃沈しました。システムを移行しようと、データベースをバックアップ復元していました。文字コードがlatin1で設定されていたため、latin1に注意してバックアップ。自分の設定したシステムであれば、latin1には設定しないのですが、今回は、引継ぎで頼まれましたシステムです。今まで、よく動いていたなと感心してしまうわけですが、とりあえず。

mysqldump --default-character-set=latin1

こちらが問題の箇所。

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES latin1 */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; 

何度、繰り返し復元してみても。文字化けがなおりません。苦しむこと、しばし。テーブルだけをまず作成し、その後、データを流し込むと文字化けしません。なぜだと思い、バックアップファイルを眺めていると、ありました。先頭部分に「/*!40101 SET NAMES latin1 */;」と、こんな設定が。文字コードを修正し、無事復元完了です。勉強になりました。

0 件のコメント:

コメントを投稿