Project

General

Profile

Actions

Bug(バグ) #4160

open

OpenPNE 3 - Task(タスク) #4033: MySQLのStrict Modeを有効にした場合に生じる問題を調査

テスト用fixtureの記述に誤りがありロード時にエラーが発生する

Added by Youichi Kimura almost 8 years ago. Updated almost 8 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2017-02-22
Due date:
% Done:

0%

Estimated time:
(Total: 0:00 h)
3.6 で発生するか:
Unknown (未調査)
[QA]バグ通知済:
No
3.8 で発生するか:
Unknown (未調査)
opCommunityTopicPlugin 絞込条件:

Description

Overview (概要)

MySQL 5.7 の Strict Mode が有効な状態での動作確認 (#4033) を行った際に発生した。

fixture の読み込みを必要とするテストコードを実行すると下記のエラーが発生する:

$ php plugins/opCommunityTopicPlugin/test/unit/model/CommunityTopicTest.php 
PHP Fatal error:  Uncaught exception 'Doctrine_Connection_Mysql_Exception' with message 'SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '2017-02-17    open_date_comment: 'あかさたな'' for column 'open_date' at row 1' 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 com...', Array)
#3 /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/UnitOfWork.php(647): Doctrine_C in /vagrant/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082

Causes (原因)

test/fixtures/999_test_data.yml#L360:

  community_event_a_<?php echo $i ?>:
    Community: community_a
    Member: member_1
    name: 'イベントナンバー <?php echo $i ?>'
    body: 'こんにちは <?php echo $i ?>'
    open_date: <?php echo date('Y-m-d', time())?>
    open_date_comment: 'あかさたな'
    area: '福岡県'

上記のように記述された fixture は以下のような YAML を出力します。

  community_event_a_1:
    Community: community_a
    Member: member_1
    name: 'イベントナンバー 1'
    body: 'こんにちは 1'
    open_date: 2017-02-17    open_date_comment: 'あかさたな'
    area: '福岡県'

これは PHP タグの仕様で、?> と後続する改行文字を含めて除去されるためです。そして、open_date にセットされる日付が不正な文字列であるとしてエラーが発生します。


Subtasks 1 (0 open1 closed)

Backport(バックポート) #4164: テスト用fixtureの記述に誤りがありロード時にエラーが発生するWon't fix(対応せず)2017-02-22

Actions
Actions #1

Updated by kaoru n almost 8 years ago

  • Target version set to 1.0.x
Actions #2

Updated by kaoru n almost 8 years ago

  • Target version changed from 1.0.x to master
Actions

Also available in: Atom PDF