中谷宗嵩
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/