件名: アップデート時のカラム不足

投稿日: 09/16/14 04:26 PM JST
投稿者: たくみん

すみません。 質問させてください。 ドメインを新サーバーに引っ越しする際に、Geeklog をそのままアップロードしたところ、php や MySQL のバージョンが違うからかそのまま動きませんでしたので、新しいバージョンをダウンロードして移行を行ってみたところ、以下のようなエラーが発生し困っております。 ・現行サーバー php4.4.9 MySQL4.0.27 Geeklog1.6.1 ・移行先サーバー php5.3.28 MySQL5.0.92 Geeklog2.1.0 ・発生したエラー(/admin/ にアクセスした際) E_USER_ERROR(256) - 1054: Unknown column 'sp.draft_flag' in 'where clause' @ /system/databases/mysqli.class.php line 279 Call Stack 1 trigger_error /system/databases/mysqli.class.php 279 2 dbQuery /system/lib-database.php 213 3 DB_query /plugins/staticpages/functions.inc 133 4 plugin_getmenuitems_staticpages /system/lib-plugins.php 439 5 PLG_getMenuItems /lib-common.php 1905 6 COM_createHTMLDocument /admin/auth.inc.php 123 7 require_once /admin/index.php 33 array(3) { ["sql"]=> string(383) "SELECT sp.sp_id, sp.sp_label FROM gl_staticpage sp, gl_topic_assignments ta WHERE (sp.sp_onmenu = 1) AND (sp.draft_flag = 0) AND (sp.template_flag = 0) AND ta.type = 'staticpages' AND ta.id = sp_id AND (ta.tid = 'all') AND ( (ta.tid IN ('geeklog','20100614104934656','information')) OR ta.tid = 'all') AND (sp.perm_anon >= 2) ORDER BY sp_label" ["ignore_errors"]=> int(0) ["result"]=> bool(false) } gl_staticpage には、確かに draft_flag というカラムはありませんでした。 トップページでは、 SELECT sp_id,sp_title,sp_content,sp_format,created,modified,sp_hits,owner_id,group_id,perm_owner,perm_group,perm_members,perm_anon,sp_php,sp_inblock,sp_help FROM gl_staticpage, gl_topic_assignments ta WHERE (sp_centerblock = 1) AND (draft_flag = 0) AND (template_flag = 0) AND ta.type = 'staticpages' AND ta.id = sp_id AND (sp_where = 0) AND ((ta.tid = 'homeonly') OR (ta.tid = 'all')) AND (perm_anon >= 2) ORDER BY sp_id のSQLに対し、Unknown column 'created' in 'field list' が出ています。 解決方法またはそのヒントでもございましたら、ご教示いただきますと幸いです。 よろしくお願いいたします。

書込: アップデート時のカラム不足

投稿日: 09/16/14 06:23 PM JST
投稿者: Ivy

E_USER_ERROR(256) - 1054: Unknown column 'sp.draft_flag' in 'where clause'
Staticpagesプラグインが正常にアップデートされていないようです。
必要なdraft flagなどがセットされていません。


対策としては

1.DBを旧バージョンに戻す
2.phpMyAdminで、gl_plugins の静的ページを、無効0 に変更する。 あるいはまた、/admin/install/rescue.php で、ログインしてプラグインの有効・無効切り替えにて、Staticpagesを無効に。
3.アップグレード実行

おすすめしませんが、手動で行う場合には、以下のブログも参考にしてください。
http://www.ivysoho.net/article.php/geeklog-2-1-update
これは2.0から2.1へ手動でアップグレードする方法となります。

gl_topicasignment は、2.0から話題複数対応になったため、静的ページ、記事、ブロックの話題対応テーブルとなります。
コンフィギュレーションの追加も必要。
このように、静的ページのテーブルから話題IDが消えて、ドラフトフラグが追加される他、様々テーブル構造が変わっています。


アップグレード時に、すべてのプラグインを無効にしてアップグレードしないとエラーになることが多いので、プラグインの無効化を先によろしくお願いします。

書込: アップデート時のカラム不足

投稿日: 12/28/14 07:06 PM JST
投稿者: Ivy

こちら、解決できたでしょうか。
どうしてもエラーになるなら、一旦静的ページをアンインストールして、新規インストールして、phpMyAdminでgl_staticpages を書き戻してやる。
gl_topicasignmentは、手動でセット。
これが最短の解決方法かとおもいます。

静的ページをTOPに表示するサイトの場合、静的ページを無効にしないままサイトをアップグレードするとかならず
アップグレード途中で失敗して静的ページのアップデートが中途半端に終わってしまう可能性は高いです。

アップグレードの際にはかならずプラグインを無効にしてください。

Geeklog Japan - 掲示板
https://www.geeklog.jp/forum/viewtopic.php?showtopic=18320