プロジェクト

全般

プロフィール

Bug(バグ) #1984

Youichi Kimura さんが12年以上前に更新

h3. 現象 

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

 h3. 原因 

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

 h3. 修正内容 

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


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

 h3. 現象 

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

 <pre> 
 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 
 </pre> 

 h3. 原因 

 commit:"6e7de531" によって test/bootstrap/database.php に追加された、 
 <pre><code class="php"> 
 $conn = opDoctrineQuery::getMasterConnectionDirect(); 
 $conn->exec('SET FOREIGN_KEY_CHECKS = 0'); 
 </code></pre> 
 のコードからエラーが発生している。ここで実行されている @SET FOREIGN_KEY_CHECKS = 0@ はMySQLに依存するクエリであるため、MySQL以外のDBMS上では実行に失敗しエラーが発生する。 

 h3. 修正内容 

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

戻る