Bug(バグ) #4161
OpenPNE 3 - Task(タスク) #4033: MySQLのStrict Modeを有効にした場合に生じる問題を調査
MySQLのSTRICT_TRANS_TABLESが有効な状態でテスト用fixtureのロードに失敗する
Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
-
Start date:
2017-02-16
Due date:
% Done:
0%
3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
No
3.8 で発生するか:
Unknown (未調査)
Description
Overview (現象)¶
MySQL 5.7 の Strict Mode が有効な状態での動作確認 (#4033) を行った際に発生した。
fixture の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:
$ php plugins/opDiaryPlugin/test/unit/model/DiaryTest.php [...] Fatal error: Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[HY000]: General error: 1364 Field 'last_comment_time' doesn't have a default value' in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082 Stack trace: #0 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement)) #1 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array) #2 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO dia...', Array) #3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_Connection->insert(Object(DiaryCommentUpdateTable), Array) #4 /vagr in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082
Causes (原因)¶
test/fixtures/diaries.yml#L110-L111:
<?php for ($i = 1; $i <= 60; $i++): ?>
diary_for_member1_<?php echo $i ?>:
Member: member1
title: "title:<?php echo $i ?> by member1"
body: "body:<?php echo $i ?> by member1"
created_at: "2009-03-<?php printf('%02d', $i) ?> 10:00:00"
updated_at: "2009-03-<?php printf('%02d', $i) ?> 10:00:00"
<?php endfor; ?>
上記のように記述された fixture は次のような YAML を出力します。
diary_for_member1_1:
Member: member1
title: "title:1 by member1"
body: "body:1 by member1"
created_at: "2009-03-01 10:00:00"
updated_at: "2009-03-01 10:00:00"
...
diary_for_member1_60:
Member: member1
title: "title:60 by member1"
body: "body:60 by member1"
created_at: "2009-03-60 10:00:00"
updated_at: "2009-03-60 10:00:00"
created_at および updated_at にセットされる "2009-03-60 10:00:00"
は不正な日付のため、STRICT_TRANS_TABLES
が有効な MySQL ではエラーが発生する。
History
#1 Updated by Youichi Kimura over 7 years ago
- Copied from Bug(バグ) #4151: MySQLのONLY_FULL_GROUP_BYが有効な状態で「日記コメント記入履歴」ガジェットを表示するとエラー added
#2 Updated by Youichi Kimura over 7 years ago
- Copied from deleted (Bug(バグ) #4151: MySQLのONLY_FULL_GROUP_BYが有効な状態で「日記コメント記入履歴」ガジェットを表示するとエラー)