2010年4月22日

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

坂井です

鈴木さん、こんにちは。
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>

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




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