LoginSignup
0
0

More than 5 years have passed since last update.

DB Error: unknown error を追いかける

Last updated at Posted at 2014-02-25

背景

UNITテストがない本番稼働コードに手を入れなければならないのでUNITテストを実装して走らせると、

DB Error: unknown error (SQL: INSERT INTO hoge (blog_id, no, reg_date) SELECT ?, MAX(no) + 1, NOW() FROM hoge WHERE blog_id = ?)

何てエラーが出てくれます。

問題

本番稼働していて本番でエラーが起きているわけではないのでテスト環境に問題があるのだと思われるが、unknown errorじゃどうすりゃいいのかわからない。

解法

PEAR_Errorオブジェクトにもう少しましな情報はないかなと言うことでMWorks_PearExceptionをthrowする手前で、PEAR_Error::getDebugInfo()を呼んでみたら、

INSERT INTO hoge (blog_id, no, reg_date) SELECT 21742, MAX(no) + 1, NOW() FROM hoge WHERE blog_id = 21742 [nativecode=1137 ** Can't reopen table: 'hoge']

と教えてくれた。
テスト環境ではDBのtableをTEMPORARYにしているんですが、TEMPORARYテーブルは自己結合できなくてエラーになってたんですね。
UNITテストを導入するより前に実装されたコードなので致し方なしなのか・・・

参考リンク

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0