中谷宗嵩
nakatani_munet****@flyin*****
2012年 9月 12日 (水) 23:11:03 JST
株式会社フライングラインの中谷です。
mroonga、いつも便利に利用させていただいております。
表題の件ですが、mroongaエンジンを使ったテーブルで、
datetime型のカラムにインサートを行ったところ、
意図していないデータが登録されてしまったため、報告させていただきます。
詳細は以下をご覧下さい。
【環境】
・CentOS6.2
・MySQL5.1.61
・mroonga2.0.3
【テーブル構造】
mysql> show create table datetime_test \G
*************************** 1. row ***************************
Table: datetime_test
Create Table: CREATE TABLE `datetime_test` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`input` varchar(254) DEFAULT NULL,
`datetime` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=mroonga DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
【データ】
上記のテーブルに下記6点のデータをインサートしました。
------------------------------------------
・mysql> insert into datetime_test (input,datetime) values ('NULL',NULL);
・mysql> insert into datetime_test (input,datetime) values ('1000-01-01
00:00:00','1000-01-01 00:00:00');
・mysql> insert into datetime_test (input,datetime) values ('9999-12-31
23:59:59','9999-12-31 23:59:59');
・mysql> insert into datetime_test (input,datetime) values ('2038-01-19
03:14:07','2038-01-19 03:14:07');
・mysql> insert into datetime_test (input,datetime) values ('2038-01-19
03:14:08','2038-01-19 03:14:08');
・mysql> insert into datetime_test (input,datetime) values ('2012','2012');
------------------------------------------
※確認しやすいように、datetimeカラムにインサートする日付を、inputカラムにvarchar型で入力しています。
そのselect結果が以下になります。
mysql> select * from datetime_test ;
+----+---------------------+---------------------+
| id | input | datetime |
+----+---------------------+---------------------+
| 1 | NULL | 1970-01-01 00:00:00 |
| 2 | 1000-01-01 00:00:00 | 1987-04-15 03:01:07 |
| 3 | 9999-12-31 23:59:59 | 1970-01-09 21:47:45 |
| 4 | 2038-01-19 03:14:07 | 2038-01-19 03:14:07 |
| 5 | 2038-01-19 03:14:08 | 1901-12-13 20:45:52 |
| 6 | 2012 | 2034-08-29 05:43:15 |
+----+---------------------+---------------------+
6 rows in set (0.00 sec)
このように、本来datetime型で入るはずの日付が、違う日付に変わってしまっています。
また、2038年問題と思われる現象も起きているようです。
参考までに、同じ内容をInnoDBのテーブルで入力したところ、下記の結果が得られます。
mysql> select * from datetime_test2;
+----+---------------------+---------------------+
| id | input | datetime |
+----+---------------------+---------------------+
| 1 | NULL | NULL |
| 2 | 1000-01-01 00:00:00 | 1000-01-01 00:00:00 |
| 3 | 9999-12-31 23:59:59 | 9999-12-31 23:59:59 |
| 4 | 2038-01-19 03:14:07 | 2038-01-19 03:14:07 |
| 5 | 2038-01-19 03:14:08 | 2038-01-19 03:14:08 |
| 6 | 2012 | 0000-00-00 00:00:00 |
+----+---------------------+---------------------+
6 rows in set (0.00 sec)
現象は以上になります。
私の環境に問題がありそうであれば、その箇所を教えていただけますと幸いです。
どうぞよろしくお願い致します。
-----------------------------------------
株式会社 フライングライン
中谷 宗嵩
東京都中央区銀座8-11-11 TK銀座8丁目ビル
URL: http://www.flyingline.co.jp/
Tel: 03-5537-0390 Fax: 03-5537-0391
Mail: nakatani_munet****@flyin*****
書評サイト『本が好き!』
http://www.honzuki.jp/
これから発売される本の検索が出来る
「近刊情報サーチ」
http://comingbook.honzuki.jp/