2010年4月22日

[mysql 15276] Re: MySQL5.1DATE型項目の制限について


 坂井さん

 鈴木です 
 早速のご教示ありがとうございます。
 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@xxxxx> 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@xxxxx>
>
>
>

0----+----1----+----2----+----3----+----4----+----5----+----6----+----7----#
KDDI ブロードバンド・コンシューマ業務推進部
総務管理G
    鈴木 正信
au 080-5072-9414
mailto:masanobu@xxxxx
――――――――――――――――――――――――
 *******************************************************
【注意】この電子メールには、KDDI株式会社の機密情報が
含まれている場合が有ります。
正式なメール受信者で無い場合は、メールの複製、再配信
または情報の使用を固く禁じております。
エラー、手違いでこのメールを受け取られましたら、削除
を行い配信者にご連絡をお願い致します。
 *******************************************************


投稿者 xml-rpc : 2010年4月22日 12:14
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95292
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。