「中山」で検索すると「青山」のデータが引っかかる

このQ&Aのポイント
  • MySQL4.0.23のデータを4.1.20のシステムに移す際に「Duplicate entry」なるメッセージが出て停止してしまい、調査をしていくうちに「店舗名のデータ」におきまして「中山支店」がすでに登録されていて登録できなかったとのことがわかりました。
  • 以前のデータ中にそのようなデータが無いため不思議に思い「select * from 店舗名 where NAME like '%中山%'」で引っ張ると「青山」の文字を含むデータがぞろぞろと出てきました。
  • 2バイトコードの問題かと思うのですが、DB内の文字コード(現在EUC)を変更するとサーバサイドのスクリプト変更が大量に発生するためこれは避けたいと思います。DB内の文字コードを変更せずにこの問題を解決できるような設定等の方法は無いでしょうか?
回答を見る
  • ベストアンサー

「中山」で検索すると「青山」のデータが引っかかる

初めて質問させていただきます。 MySQL4.0.23のデータを4.1.20のシステムに移す際に「Duplicate entry」なるメッセージが出て停止してしまい、調査をしていくうちに「店舗名のデータ」におきまして「中山支店」がすでに登録されていて登録できなかったとのことがわかりました。 ところが、以前のデータ中にそのようなデータが無いため不思議に思い「select * from 店舗名 where NAME like '%中山%'」で引っ張ると「青山」の文字を含むデータがぞろぞろと出てきました。 ここで、2バイトコードの問題かと思うのですが、DB内の文字コード(現在EUC)を変更するとサーバサイドのスクリプト変更が大量に発生するためこれは避けたいと思います。 DB内の文字コードを変更せずにこの問題を解決できるような設定等の方法は無いでしょうか? よろしくお願いいたします。

  • MySQL
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • moon_night
  • ベストアンサー率32% (598/1831)
回答No.1

考えられるのは、MysqlのcharactersetがEUC以外になっていませんか? その場合は default-character-set を ujis に変更してください。

ralf124c
質問者

補足

ご回答ありがとうございます。 「my.cfg」の設定では以下のように「ujis」にしておりましたが ------------------------------------------------------------- default-character-set=ujis # character-set-server=ujis ←あまり意味が無かったのでコメントアウト skip-character-set-client-handshake ------------------------------------------------------------- MYSQLコマンド「SHOW VARIABLES LIKE 'char%';」で調べてみると「character_set_database」が「utf8」のままで効かなかったのが原因でした。 ROOT権限で「/var/lib/mysql/データベース名」にある「db.opt」の内容を以下のように強制的に書き換えてなんとか正常動作するようになりました。 ------------------------------------------------ default-character-set=ujis default-collation=ujis-japanese-ci ------------------------------------------------ 貴重なヒントありがとうございました。

関連するQ&A

  • データの移行について

    いつもお世話になっております。 MySQLのデータに移行について質問させていただきます。 サーバの移転に伴い、データベースも移行することになりました。 MySQLの文字コードが変わっているため、新しいサーバで文字化けを 起こしてしまいます。 1)データのダンプ   $ mysqldump --user=root --password --default-character-set=latin1 DB名 > dump.sql 2)新しいサーバで文字コード変換   $ perl -pi -e 's/utf-8/latin1/' dump.sql 3)インポート   $ mysql --user=root --password DB名 < dump.sql 上記の方法で問題がありますでしょうか。 ご教示よろしくお願いいたします。 <旧サーバ>  MySQL:3.23.58  文字コード:euc-jp <新サーバ>  MySQL:5.0.45  文字コード:utf-8

  • DBの文字コード切り替え

    MySQL 5.6 なのですが・・・・ DBの文字コードはDB作成後にデータを登録した後に、途中で文字コードを変更した場合、DBに登録済みの全角文字はどうなりますか? 文字化けする場合、変換ツールのようなものはあるのでしょうか? また文字コードの変更は ini ファイルを変更してMySQLを再起動するだけでいいのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQL+PHPサイトでSJISからEUCに変換したい

    いつもお世話になっております。 現在PHP4.3.9+MySQL4.1.2でSJISコードで運営をしておりますが、サイトの文字コードをEUCに変更しようかと検討しております。それで、現在いろいろとEUCコードでMySQLから引っ張ってきたデータの表示及びMySQLへのデータ登録の実験をしております。 まずは、PHPファイルをEUCに変換し、php.ini内のSJISだった箇所を下記のようにEUC-JPに変換しました。 mbstring.internal_encoding = EUC-JP mbstring.http_output = EUC-JP そして、PHPファイル内でMySQLへ接続後文字コードを指定している箇所を $sql="SET NAMES ujis"; mysql_query($sql); と変更しました。 実際のPHPファイルとphp.iniに関する部分のみEUCコードに変更し、sjisで設定しているMySQLの設定ファイルとテーブル内は何も変更していない状態です。この状態でフォームに入力した内容をMySQLのテーブルに追加し、追加した情報をPHPで表示する実験をしましたが特に文字化け等の問題は無く動作しました。また既にMySQLに登録してあるデータをEUCの環境で表示させましたが、問題なく表示されました。 前置きが長くなりましたが、MySQLの設定を特に変更しなくても今回私が行なった方法でSJISからEUCへの変換をしてしまって問題は無いでしょうか?PHPのファイル数やMySQLのテーブル数が多いので、いきなり実験通りに動くか不安があるので、質問させていただきました。 PHPやMySQLの文字コードの初歩的なことが分かっていないもので、変な質問になってしまいましたが、アドバイスいただければ幸いです。

    • ベストアンサー
    • PHP
  • データ検索

    PHPからMYSQLのデータを検索するごくごく簡単なプログラムを作ってみようと思いました。 どうやらデーターベースにアクセスしていないような・・・・・??? 初心者です。申し訳ありませんがよろしくお願い致します。 <? $db = mysql_connect(); mysql_select_db('suzu'); //前画面からのパラメータ $ab = $_POST["Memb"]; //一致データ検索 $sql = " select * from Toshokan \n " . " where to_menb = '$ab' " ; $res = mysql_db_query($db,$sql); $arycol = mysql_fetch_array($res,MYSQL_ASSOC); print ("$ab"); print ("###"); print ($res["to_menb"]); print ("***"); print ("$FMemb"); print ("###"); print ($arycol['to_post1']); if ( $res == $FALSE ) { die("新規登録"); } else { die("更新"); } mysql_free_result ($res); mysql_close($db); ?> 結果 上記の print ($res["to_menb"]); print ($arycol['to_post1']); は出力されずにダミー状態です。 データーベースにアクセスされていないと考えたのですが、、、、、 どなたかご教授いただければ幸いです。

    • ベストアンサー
    • PHP
  • postgresからmysql

    postgresのDBをmysqlのDBにインポートすることは可能でしょうか? postgres環境文字コードUTF-8 mysql環境文字コードEUC-JP

  • MySQL&PHPで日本語検索

    PHP&MyQLでショッピングサイトを作ろうと制作中です。 今、MySQLで日本語検索ができず行き詰ってしまいました。 日本語を16進数に変換して検索させれば、うまくいきそうだと考えていますが、なかなかうまくいきません。 MySQLに登録した日本語データは「EUC」の文字コードを16進数に変換したものです。検索窓から入力した日本語の文字コードもEUCであれば、そのまま16進数に変換してマッチングしてやれば、検索できそうなのですが、 POSTで取得した日本語の文字コードが、どうしてもEUCになりません。 (mb_convert_encodingを使用してもだめだし・・・) POSTで取得した文字列の文字コードの変換は、どうすればいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP+MYSQLでの文字コードによる文字化け

    お世話になっております。 PHP+MYSQLの構成でDBに登録、DBから参照→表示といったアプリケーションを作っているのですが質問があります。 文字コードを意識せずに、”Shift-JIS”でPHPやhtmlのコードを書いていたのですが、仕様上問題があることに気づいたので今まで書いたソースの文字コードを”EUC-JP”に変更することになりました。 フリーで複数のテキストファイルをShift-JIS→EUCに一括変換するソフトがあるので、そのソフトを使ってEUCの文字コードに変換したところ、ソース中の日本語(全角)が文字化けしてしまいました。 #どの変換ソフトを使っても同様の結果になります ブラウザー上で表示すると問題ありませんが、今後ソースをいじるときに非常に不便です。目的としては、「ソースの文字コードをShift-JISに変換」かつ「ソース内の日本語(全角)の文字化けを起こさない」方法をご存知の方は是非ご教授お願い致します。

    • ベストアンサー
    • MySQL
  • PHP+MySQL エンコード

    文字コードについて教えて下さい。 データベースMySQL の文字セット: UTF-8 Unicode (utf8)に固定。 htmlはSIFT-JISで表示。 フォームで受けとったデータをPHPからDBに書き込む場合 i18n_convert($data,"UTF-8", "SJIS"); をして書き込めば問題ないでしょうか? DBがEUCの場合は問題なかったのですが、UTF-8は初めて 扱うため、文字化けの不安があります。 いまいち、文字コード(バイト数の違いなど)が理解できておりません。 ご教授お願い致します。

    • 締切済み
    • PHP
  • selectであるデータを検索した結果のリターンコードを取得するには?

    以下のようなコードをPHP内で実行しています。 以下の例は、MySQLテーブル'test_tbl'の'id'というフィールド内に'500'というデータが存在した場合、そのデータを取り出してecho文で表示させるようにしたものです。 検索した結果データが存在しなかった場合、データが存在していないということを、リターンコードで判断したいと思っています。 リターンコードはどうやって見ることができますか? '$rs'にリターンコードが入ってくるのでしょうか? ('Resource id #3'のような値が返ってくるようですが) リターンコードとその意味の一覧とかが、どこかのサイトにあればURLを教えていただければ助かります。 よろしくお願い致します。 ------------------------------------------------ <?php  if( ! $conn = mysql_connect( 'localhost', 'user_id', 'password') ){   die( 'MySQL接続失敗' );  }  mysql_select_db( 'test_db', $conn );  $rs = mysql_query("SELECT id FROM test_tbl WHERE id = 500", $conn);  $rec = mysql_fetch_array( $rs, MYSQL_ASSOC );  echo $rec['id'];  mysql_free_result( $rs );  mysql_close($conn); ?>

  • DBからのCSVファイルダウンロード

    MySQLに溜めたデータをCSV形式でダウンロードしたいと思っていますが、ダウンロードしたファイルが文字化けして困っています。 PHP、DBともにEUCで作成しているのですが、プログラムの中に文字コードに関する記述が必要になるとは思うのですが、何を追加すればいいのか教えていただけますでしょうか?

    • ベストアンサー
    • PHP