top


総投稿数 本 
no_

スポンサーサイト

 --------
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
カテゴリ :スポンサー広告 トラックバック(-) コメント(-)
no_169

Illegal mix of collations:ほんとに漢字コードの問題はややこしい ・・・ 【MySQL】

 2008-08-13
 ほんとに漢字コードの問題はややこしい。

 もちろん最初から
  現在主流であろう UTF-8 に統一されて開発を進めているなら
  さほど問題ないのかもしれない。

 しかしながら、多くの顧客サイトは
 もう数年来(中には10年超え)のプロジェクトで

 ・Shift-JIS 中心のサイト から
 ・EUC-jp全面のもの
 ・携帯展開のため Shift-JIS を装いながら
  MySQL だけは EUC-JP
 ・MySQL だけはそのサポートの関係で UTF-8 だが
  他はコスト上、EUC-JP のまま
  ・・・・・

 などと多種多様yな条件の上で、動いています。
 ※もちろん、私の個人プロジェクトも然り

で、またエラーだ。
Illegal mix of collations (utf8_general_ci,COERCIBLE) and (ujis_japanese_ci,IMPLICIT) for operation **


phpMyAdmin 上で最近よく使う
◆一時的な データベース・テーブルの内容の 一括置換
  ※最近 [よく忘れる] にも追記
 * -------------------------------------------- *
 【SQL文で、指定文字置換】
  ※phpMyAdmin など利用して、SQL文だけで
   指定した文字を一括置換する
で、

UPDATE `table_name` SET target_field=REPLACE (target_field,"?","~");

 とした時に発生 したのだが

元々の不具合要因は

◆この ? だ。

 これは、このテーブルに
 ローカルで編集したデータを
 mysqlコマンドで組み込んだものだが

 ・ファイルを UTF-8 で作成し、組み込むと
   すべて ?に化けてしまう
 ・EUC-JP にして行うと
   一部の文字が(今回でいえば "~") ?に化けてしまう

 それを phpMyAdmin上で一括置換しようとしたのだった。

※サーバーは複数のプロジェクトが混在しており
 サーバー自体の 漢字コードを簡単に統一できる状況ではなく
 my.cnfにおいて
[mysqld]
     init-connect='SET NAMES utf8';
 などを設定すればいい
 というものではない

  ▼

 さぁ、どうする

◇今回のエラー表示は、
  ・ (utf8_general_ci,COERCIBLE) ・・・ これがサーバー側のコード
    今回でいえば、 "?"
  ・ (ujis_japanese_ci,IMPLICIT) ・・・ これがクライアント側のコード
    今回でいえば、 "~"
   これが異なっている ということで、

   通常の対処であれば
   事前に、合わせればいいわけで、

◇PHP スクリプト上であれば
  SQL文:"set names utf8" を実行してやればいい

  が、phpMyAdmin 上で、直接 SQLのフォーム画面から打ち込んでも
  うまくゆかぬ。

  はてどうしたものだろう。

  ▼

 結果、 かんたん だった!!

 このテーブルのデータを mysqldump で格納するときに
 そのテキストファイル内で

  set names ujis; を加えるだけだった

あ~ また 無駄に時間を使ってしまった。
記録しておこう。

FC2ブログランキングにほんブログ村 IT技術ブログ Webサイト構築へブログ王ランキング人気ブログランキング人気ホームページランキングへ


commentsコメント
comment_post












管理者にだけ表示を許可する
commentトラックバック
トラックバックURL:
http://metaboy.blog23.fc2.com/tb.php/169-17e1a38d
ようこそ
Add to Google 創るmetaboy:RSSフィード
My Yahoo!に追加
最新記事のRSS | 問い合わせ

仕事検索、アルバイト検索、依頼仕事の検索ポータル - 仕事検索.COM - www.jobkensaku.com ツクルン

創るmetaboy - WEB創る、サイト創る、何創る - 創ったmetaboy

 

リンク集

 

最近の記事

 

ブロとも申請フォーム
Sponserd by

さくらのレンタルサーバ さくらのレンタルサーバ
大容量・高機能レンタルサーバー heteml 大容量・高機能レンタルサーバー heteml
XREA (ValueDomain)
お名前.com お名前.com
名づけてねっと名づけてねっと
ムームードメインムームードメイン

 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。