プロジェクト

全般

プロフィール

Bug(バグ) #1984

テストケースをSQLite等のDBMS上で動作させることができない

Youichi Kimuraほぼ13年前に追加. ほぼ9年前に更新.

ステータス:
Fixed(完了)
優先度:
Normal(通常)
担当者:
対象バージョン:
開始日:
2011-03-29
期日:
進捗率:

100%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

説明

現象

php5 test/unit/model/doctrine/MemberTest.php などのようにテストケースを実行すると、下記のようなエラーが出力されて中断する。

PHP Fatal error:  Uncaught exception 'Doctrine_Connection_Sqlite_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 19 activity_data.body may not be NULL' in /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO act...', Array)
#3 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctr in /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082

Fatal error: Uncaught exception 'Doctrine_Connection_Sqlite_Exception' with message 'SQLSTATE[23000]: Integrity constraint violation: 19 activity_data.body may not be NULL' in /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection/Statement.php(269): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Statement))
#1 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1042): Doctrine_Connection_Statement->execute(Array)
#2 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(687): Doctrine_Connection->exec('INSERT INTO act...', Array)
#3 /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctr in /home/upsilon/git/openpne3/sqlite/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082

原因

test/fixtures/test_data.yml の中にActivityDataのbodyの値が設定されていないレコードが含まれている。

修正内容

dummy_activity7 と dummy_activity8 に不足している値を追加する。

#1527 に対する修正によって再度発生した問題

現象

php5 test/unit/model/doctrine/MemberTest.php などのようにテストケースを実行すると、下記のようなエラーが出力されて中断する。

PHP Fatal error:  Uncaught exception 'Doctrine_Connection_Sqlite_Exception' with message 'SQLSTATE[HY000]: General error: 1 near "SET": syntax error. Failing Query: "SET FOREIGN_KEY_CHECKS = 0"' in /home/upsilon/git/openpne3/houou/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php:1082
Stack trace:
#0 /home/upsilon/git/openpne3/houou/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php(1061): Doctrine_Connection->rethrowException(Object(PDOException), Object(Doctrine_Connection_Sqlite_ExtraFunctions), 'SET FOREIGN_KEY...')
#1 /home/upsilon/git/openpne3/houou/test/bootstrap/database.php(15): Doctrine_Connection->exec('SET FOREIGN_KEY...')
#2 /home/upsilon/git/openpne3/houou/test/unit/model/doctrine/MemberTest.php(4): include_once('/home/upsilon/g...')
#3 {main}
  thrown in /home/upsilon/git/openpne3/houou/lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Connection.php on line 1082

原因

6e7de531 によって test/bootstrap/database.php に追加された、

$conn = opDoctrineQuery::getMasterConnectionDirect();
$conn->exec('SET FOREIGN_KEY_CHECKS = 0');

のコードからエラーが発生している。ここで実行されている SET FOREIGN_KEY_CHECKS = 0 はMySQLに依存するクエリであるため、MySQL以外のDBMS上では実行に失敗しエラーが発生する。

修正内容

上記のコードを、DBMSがMySQLである場合のみ実行するように修正する。


関連するチケット

関連している OpenPNE 3 - Bug(バグ) #1527: OpenPNE 2 からのアップグレードで、誤ったコミュニティカテゴリの紐付けをおこなってしまうことがある Fixed(完了) 2010-08-25
コピー先 OpenPNE 3 - Backport(バックポート) #3637: テストケースをSQLite等のDBMS上で動作させることができない Fixed(完了) 2011-03-29
コピー先 OpenPNE 3 - Backport(バックポート) #3661: テストケースをSQLite等のDBMS上で動作させることができない Fixed(完了) 2014-07-15

関係しているリビジョン

リビジョン 019a6ce7 (差分)
Youichi Kimuraほぼ13年前に追加

activity_data.body must not contain the null value (fixes #1984)

リビジョン 45157960 (差分)
Youichi Kimuraほぼ12年前に追加

avoid incompatible query when not using MySQL (fixes #1984)

履歴

#1 Youichi Kimuraほぼ13年前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 019a6ce780fb636795dab151fc4ef679f4aca244 で適用されました。

#2 Kousuke Ebihara12年以上前に更新

  • 担当者Youichi Kimura にセット
  • 対象バージョンOpenPNE 3.7.0 にセット

#3 Kousuke Ebihara12年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

#4 isao sano12年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

テストデータの修正なので、動作テストはおこないません。
このチケットを完了致します。

#5 Youichi Kimuraほぼ12年前に更新

  • 説明 を更新 (diff)
  • ステータスFixed(完了) から New(新規) に変更
  • 進捗率100 から 0 に変更
  • 3.6 で発生するかUnknown (未調査) にセット
  • 3.4 で発生するかUnknown (未調査) にセット

当チケットの修正後にコミットされた 6e7de531 から再度SQLite環境下でテストケースが実行できなくなったため、ステータスを戻します。

#6 Youichi Kimuraほぼ12年前に更新

  • 対象バージョンOpenPNE 3.7.0 から 261 に変更

#7 Shouta Kashiwagiほぼ12年前に更新

  • 対象バージョン261 から OpenPNE 3.8.x に変更

#8 Youichi Kimuraほぼ12年前に更新

  • ステータスNew(新規) から Pending Review(レビュー待ち) に変更
  • 進捗率0 から 50 に変更

更新履歴 4515796062a08d52b7a4409aa659c3aa268ae592 で適用されました。

#9 Shinichi Urabe9年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.8.12 に変更
  • 3.8 で発生するかUnknown (未調査) にセット

#10 誠二 天重9年以上前に更新

#11 誠二 天重9年以上前に更新

  • 対象バージョンOpenPNE 3.8.12 から OpenPNE 3.8.x に変更

#12 誠二 天重9年以上前に更新

  • 対象バージョンOpenPNE 3.8.x から OpenPNE 3.9.0-old に変更

#13 Shinichi Urabe9年以上前に更新

  • ステータスPending Review(レビュー待ち) から Pending Testing(テスト待ち) に変更
  • 進捗率50 から 70 に変更

レビューOKです

#14 isao sano9年以上前に更新

#15 Youichi Kimura9年以上前に更新

  • ステータスPending Testing(テスト待ち) から Fixed(完了) に変更
  • 進捗率70 から 100 に変更

更新履歴 7439f352059a5ac9c46150625870a359f32b936b で適用されました。

他の形式にエクスポート: Atom PDF