ブロック移動でmysql error 1146

2012年4月27日 at 1:16

concrete5 5.5.1/Xserver/IE9

外部フォームブロックを追加しました。
そのブロックをページ内で移動すると、
下記エラーが発生します。なぜでしょう?

予期せぬエラーが発生しました。

mysql error: [1146: Table 'ashiyanpo_meeting.Logs' doesn't exist] in EXECUTE("insert into Logs (logType, logText, logIsInternal) values ('exceptions', '例外が発生しました: mysql error: [1146: Table \'ashiyanpo_meeting.CollectionVersionAreaLayouts\' doesn\'t exist] in EXECUTE("SELECT * FROM CollectionVersionAreaLayouts WHERE cID=100 AND cvID=\'79\' AND arHandle=\'Main : Layout 4 : Cell 1\' ORDER BY position ASC, cvalID ASC")\n\n#0 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/libraries/3rdparty/adodb/adodb.inc.php(1037): adodb_throw(\'mysql\', \'EXECUTE\', 1146, \'Table \'ashiyanp...\', \'SELECT * FROM C...\', false, Object(ADODB_mysql))\n#1 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/libraries/3rdparty/adodb/adodb.inc.php(993): ADOConnection->_Execute(\'SELECT * FROM C...\')\n#2 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/libraries/3rdparty/adodb/adodb.inc.php(1543): ADOConnection->Execute(\'SELECT * FROM C...\', Array)\n#3 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/models/area.php(498): ADOConnection->GetArray(\'SELECT * FROM C...\', Array)\n#4 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/models/area.php(399): Area->getAreaLayouts(Object(Page))\n#5 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/models/layout.php(280): Area->display(Object(Page))\n#6 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/models/layout.php(192): Layout->displayTableGrid(1, 2, Object(Page))\n#7 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/models/area.php(402): Layout->display(Object(Page), Object(Area))\n#8 /home/ashiyanpo/ashiyanpo.net/public_html/themes/greensalad/full.php(38): Area->display(Object(Page))\n#9 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/libraries/view.php(847): include(\'/home/ashiyanpo...\')\n#10 /home/ashiyanpo/ashiyanpo.net/public_html/concrete/dispatcher.php(274): View->render(Object(Page))\n#11 /home/ashiyanpo/ashiyanpo.net/public_html/index.php(2): require(\'/home/ashiyanpo...\')\n#12 {main}\n', 1)")

タグ:

Re: ブロック移動でmysql error 1146

2012年4月27日 at 21:35
データベースにテーブルが無いというエラーですが

・どのような外部フォームを作成されたか?
・ほかのブロックを移動した場合はどうなるか?

教えていただけませんか?
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 7:19
ご返事が遅くなり申し訳ございません。

1.外部フォームは、concrete5が使っているDBとは別に、アプリ専用DBを使っています。
  そのDBからデータを呼び出して画面に表示する外部フォームを作っています。

2.他のブロックを移動しても同じエラーが発生します。

concrete5のバグでしょうか?
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 8:23
バグかもしれませんが、再現状況が分からないですね。
ひょっとして、5.4.2.2からアップグレードされましたか?
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 8:42
Windows環境からLinuxに移行した際にも同様のエラーが出るようで、それを解消するアドオンもあります。
http://www.concrete5.org/marketplace/addons/database-case-sensitivity-migration/

が、今回は違うかも…。
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 10:13
はい、5.4.2.2からアップグレードしました。
Database Case Sensitivity Migration - 1.1.2を導入してみましたが、
現象は再現してしまいます。どうやら、外部フォームを削除すると、
うまく編集できるようなので、外部フォームに問題がありそうです。
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 11:30
アップグレード時にデータベースの移行が完了していない可能性があります。
下記のアドレスにアクセスしてみてください

サイトのURL/index.php/tools/required/upgrade
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 12:19
DBの移行を実行してみましたが、結果は同じでした。
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 11:10
おそらく、外部フォームのプログラムが変更になっているのに、お使いの外部フォームブロックのバージョンが古い可能性があるかも。

古いバージョンの外部フォームで

・変更する前と自分で改造した時の DIFF
・5.4.1.1 オリジナルの外部フォームと 5.5.1 オリジナルの外部フォームの DIFF

の2つを見比べ、新しいバージョンの外部フォームブロックに会ったプログラム改造を見直されると良いかもです。
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 11:40
ashiyanpo_meetingデータベースはconcrete5のコアのデータベースですか?
たぶんで申し訳ないのですが、

ashiyanpo_meetingが外部データベースであれば
$db = Loader::db(null, null, null, null, true);
上記コードで外部フォームの外部データベースを呼んだ最後に上記を入れDBをコアのデータベースに戻す必要があるんじゃないかと思います。
ちがったらごめんなさい。。。
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 12:46
ビンゴ!!! 大当たりです!。
外部DBを使っていたので、コアのDBに戻したら、エラーが出なくなりました。
本当にありがとうございます!!

concrete5でアプリがDBを使う場合は、コアDBを使う方が良いのでしょうか?
私はDBのバックアップなどを考慮して、別DBにしてしまいました。
 

Re: ブロック移動でmysql error 1146

2012年4月30日 at 13:37
外部DBに関しては一概には言えないと思いますがconcrete5外からの操作がないのであれば
僕は内部にテーブルを持ったほうがいいと思います。
それとDBをさわる場合は外部フォームではなく、ブロックを作成されるほうが運用上いいと思います。(あくまでも主観と思ってください)