[前][次][番号順一覧][スレッド一覧]

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]