mysql:15607
From: 野副 勝己 <野副 勝己 <nozoe@xxxxxxxxxx>>
Date: Tue, 2 Aug 2011 17:35:16 +0900
Subject: [mysql 15607] Re: Indexをつけるとと、update のwhere 句マッチしない [Ver.4.1.23]
野副です。 平塚さん、有難うございます。 まさに、その回避方法を先ほど何とか探り当てた所でした。 phpMyadmin でテーブルを眺めていたら、それぞれのカラムに照合順序があり、 ひょっとして、これが怪しいのでは?と思い、 ALTER TABLE 'm_mac' CHANGE 'mac_id_no' 'mac_id_no' VARCHAR(8) CHARACTER SET ASCII COLLATE ascii_general_ci NOT NULL; #phpmyadin の画面上に出力された、「実行したSQL文」です。 #実際にやったのは、カラム変更、プルダウン選択、保存。 を実行し、照合順序を、ascii_general_ci に変更した所、 無事に該当レコードをupdate する事が出来ました。 バグ情報が何処にあるか解らなかった(バグ情報から検索する事が出来なかった …) ので、確信が持てずにいたのですが、平塚さんのメールでバグに該当している と言う事に確信が持てましたので、これで延命処置を図りたいと思います。 ありがとうございました。 #phpMyAdmin が無かったら、こんなSQL文打てない… P.S. 解せないのは、SELECT 文ではIndex が有効に働いているにも関わらず 何故、UPDATE 文ではIndex 検索で空振りするのだろうかと言うことです。 #UPDATE コマンドの応答速度からすると、いきなり該当無しで返ってきてい #る気がする… 実行計画って、SELECT文のWHERE句とUPDATE 文のWHERE句で違うのでしょうか? 不思議です… >> -----Original Message----- >> From: HIRATSUKA Sadao [mailto:hiratsuka.sadao@xxxxxxxxxx] >> Sent: Tuesday, August 02, 2011 4:30 PM >> To: ml@xxxxxxxxxx >> Subject: [mysql 15606] Re: Indexをつけるとと、update のwhere 句マ >> ッチしない [Ver.4.1.23] >> >> こんにちは、平塚です。 >> >> On Tue, 2 Aug 2011 13:26:57 +0900 >> 野副 勝己 <nozoe@xxxxxxxxxx> wrote: >> >> > OS: Redhat ES4.5 >> > MySQL: Ver. 4.1.23 >> >> > `mac_id_no` varchar(8) NOT NULL DEFAULT '', >> > KEY `mac_id_no` (`mac_id_no`) >> > ) ENGINE=InnoDB AUTO_INCREMENT=15000 DEFAULT CHARSET=utf8 >> >> 以下のバグにヒットしているように見えます。 >> >> Bug #28878 >> InnoDB tables with UTF8 character set and indexes cause wrong result >> for DML >> http://bugs.mysql.com/bug.php?id=28878 >> >> もしUTF-8が必須でなければ、mac_id_no のみ >> 別のキャラクタセットにしてみるのはいかがでしょうか。 >> >> | Welcome to the MySQL monitor. Commands end with ; or \g. >> | Your MySQL connection id is 1 to server version: >> 4.1.22-community-max-nt >> | >> | mysql> alter table test modify c2 varchar(10) character set latin1; >> | Query OK, 0 rows affected (0.22 sec) >> | Records: 0 Duplicates: 0 Warnings: 0 >> | >> | mysql> show create table test\G >> | *************************** 1. row *************************** >> | Table: test >> | Create Table: CREATE TABLE `test` ( >> | `c1` int(11) NOT NULL default '0', >> | `c2` varchar(10) character set latin1 default NULL, >> | PRIMARY KEY (`c1`) >> | ) ENGINE=InnoDB DEFAULT CHARSET=utf8 >> | 1 row in set (0.00 sec) >> >> また、別のバグレポートですと、 >> >> Bug #31395 >> equality match in a where clause against an utf8 field fails >> http://bugs.mysql.com/bug.php?id=31395 >> >> ・like検索にすると回避できる >> ・4.1.22では発生しない >> >> という情報があります。 >> >> -- >> 平塚貞夫 hiratsuka.sadao@xxxxxxxxxx >> >>
15605 2011-08-02 13:26 [野副 勝己 <nozoe@xx] Indexをつけるとと、update のwhere 句マッチしない [Ver.4.1.23] 15606 2011-08-02 16:30 ┗[HIRATSUKA Sadao <hir] -> 15607 2011-08-02 17:35 ┗[野副 勝己 <nozoe@xx] 15608 2011-08-02 20:30 ┗[HIRATSUKA Sadao <hir] 15609 2011-08-03 10:46 ┗[野副 勝己 <nozoe@xx]