mysql:15278
From: SAKAI Kei <SAKAI Kei <sak2@xxxxxxxxxx>>
Date: Thu, 22 Apr 2010 12:42:49 +0900
Subject: [mysql 15278] Re: MySQL5.1DATE型項目の制限について
坂井です >>鈴木さん 「エラーになる」のが MySQL のエラーだとしたら、STRICTモードに なっているのだと思いますが、考えられるのとしては以下2つあります。 1)その「WEBベースのシステム」内で接続時にSTRICTモードを指定 している(前のメールを書いた時にはサーバオプションの設定で STRICT_ALL_TABLES していると考えていましたが、このオプショ ンは接続ごとにも指定可能なのです) そのシステムの接続ルーチンを通過させて select @@sql_mode の実行させるようなサンプルを作ることができれば、それで 確認してみると分かります。 2)その「WEBベースのシステム」内で、MySQLからWarningが帰って 来た場合でも「エラー」として扱っている (この場合、warningは出つつも 0000-00-00 なデータは登録さ れるので、""を登録しようとして「エラー」が出た後でのテー ブルへの登録状況確認すれば切り分けができます) 手前味噌ですが値の切り捨てやsql_mode については以前以下の エントリを書いたので、参考になれば幸いです。 http://d.hatena.ne.jp/sakaik/20100303/mysqlmode それから、 > ストリクトモード時に無効なデータを入れたい場合は、 > INSERT IGNOREまたはUPDATE IGNOREを指定する。 との事ですが、今回(今の時点での確認内容では) ストリクトモードで動作しているという確認が取れていないので 前提条件が合わない「結果オーライ」になっちゃいます。 「INSERT IGNORE でうまく行ったから、きっとストリクトモード で動いているのだろう」という推測はできますが:-) 上位 1) の方法などで「ストリクトモードである」ことの確認が 取れれば、 a)そのモードをやめる(理由があって指定しているの でしょうから難しいかもしれませんが) b) INSERT IGNORE にする c) 日付に "" を与えるのをやめる などの対応が考えられますね。 thank you On Thu, 22 Apr 2010 12:14:06 +0900 KDDI 鈴木 正信 <masanobu@xxxxxxxxxx> wrote: > > 坂井さん > > 鈴木です > 早速のご教示ありがとうございます。 > SQL_MODEって初めて知り勉強になりました。 > > すぐに試したのですが結果は↓と同じ空欄表示でした。 > > >mysql> select @@sql_mode; > >+------------+ > >| @@sql_mode | > >+------------+ > >| | > >+------------+ > > SQL_MODEを手懸りにNETを検索すると、 > http://www.hirohama.biz/mysql/2007/06/22-100644.html > ストリクトモード時に無効なデータを入れたい場合は、 > INSERT IGNOREまたはUPDATE IGNOREを指定する。 > > という記述があり試して見るとうまく行きました。 > これなら改修も小規模で済みそうです。(嬉) > > 今回の件は、これがベターな解でしょうか? > もっと簡単な方法があれば引き続き皆様の > お知恵を頂ければ有り難いです。 > > > >坂井です > > > > 鈴木さん、こんにちは。 > > 5.1でも 日付型への "" は truncate されて 0000-00-00 として > > 登録されると思いますが(warning は出る)、エラーになるという > > ことで、何かSQLモードを設定されていませんか? > > SELECT @@SQL_MODE; で確認可能です。 > > SQL_MODE として STRICT_ALL_TABLES が指定されていると warning > > ではなくエラーになります。 > > > >実行サンプル > >---- > >mysql> create table a (id int, dt date); > >mysql> insert into a values (1, "0000-00-00"); > > > >mysql> insert into a values (2, ""); > >Query OK, 1 row affected, 1 warning (0.00 sec) > > > >mysql> show warnings; > >+---------+------+-----------------------------------------+ > >| Level | Code | Message | > >+---------+------+-----------------------------------------+ > >| Warning | 1265 | Data truncated for column 'dt' at row 1 | > >+---------+------+-----------------------------------------+ > > > >mysql> select * from a; > >+------+------------+ > >| id | dt | > >+------+------------+ > >| 1 | 0000-00-00 | > >| 2 | 0000-00-00 | > >+------+------------+ > > > > > >mysql> select @@sql_mode; > >+------------+ > >| @@sql_mode | > >+------------+ > >| | > >+------------+ > > > >mysql> set sql_mode='STRICT_ALL_TABLES'; > > > >mysql> insert into a values (3, ""); > >ERROR 1292 (22007): Incorrect date value: '' for column 'dt' at row 1 > > > >------ > > > >Thank you > > > >On Thu, 22 Apr 2010 11:12:04 +0900 > >KDDI 鈴木 正信 <masanobu@xxxxxxxxxx> wrote: > >> > >> こんにちは 鈴木と申します > >> > >> Windows版 MySQL4.1.7(32) で動かしているWEBベースのシステムを > >> Windows版 MySQL5.1.45(64) に載せ変える為のTEST作業を行っていますが > >> > >> MySQL4.1.7では許容されていた DATE型項目への > >> 空白の代入が、MySQL5.1.45ではエラーになります > >> (null や '0000-00-00' はOK) > >> > >> 空白を'0000-00-00'に変換するとなると > >> 改修規模が膨れ上がるので、うろたえています・・・ > >> 空白の代入を許す方法は無いものでしょうか? > >> > >> 何かご存知の方に解決の糸口をアドバイス頂ければ > >> と思い投稿致しました。何卒宜しくお願い致します。 > > > >-- > >SAKAI Kei <sak2@xxxxxxxxxx> > > > > > > > > 0----+----1----+----2----+----3----+----4----+----5----+----6----+----7----# > KDDI ブロードバンド・コンシューマ業務推進部 > 総務管理G > 鈴木 正信 > au 080-5072-9414 > mailto:masanobu@xxxxxxxxxx > ―――――――――――――――――――――――― > ******************************************************* > 【注意】この電子メールには、KDDI株式会社の機密情報が > 含まれている場合が有ります。 > 正式なメール受信者で無い場合は、メールの複製、再配信 > または情報の使用を固く禁じております。 > エラー、手違いでこのメールを受け取られましたら、削除 > を行い配信者にご連絡をお願い致します。 > ******************************************************* -- SAKAI Kei <sak2@xxxxxxxxxx>
15271 2010-04-22 11:12 [KDDI 鈴木 正信 <mas] MySQL5.1 DATE型項目の制限について 15272 2010-04-22 11:28 ┣[SAKAI Kei <sak2@xxxx] 15276 2010-04-22 12:14 ┃┗[KDDI 鈴木 正信 <mas] -> 15278 2010-04-22 12:42 ┃ ┗[SAKAI Kei <sak2@xxxx] 15280 2010-04-22 12:57 ┃ ┗[KDDI 鈴木 正信 <mas] 15274 2010-04-22 11:40 ┣[Nakase Hiroaki <h_na] 15275 2010-04-22 11:51 ┃┗["Watanabe Tomoyuki" ] 15279 2010-04-22 12:47 ┃ ┗[KDDI 鈴木 正信 <mas] 15281 2010-04-22 12:58 ┃ ┗[SAKAI Kei <sak2@xxxx] 15359 2010-07-13 08:48 ┗[KDDI 鈴木 正信 <mas] MySQL5.1 mysqldumpのエラーについて 15360 2010-07-13 11:09 ┣[Mikiya Okuno <mikiya] 15362 2010-07-13 14:22 ┃┗[KDDI 鈴木 正信 <mas] @ 15361 2010-07-13 11:11 ┗[らっちょ らっちょ <z]