■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。
このフォーラムは閲覧専用のアーカイブです。

バージョンアップが出来ません(1.6.10→1.6.13.6)

peer > バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/18 22:28
お世話になります。

1.6.10 から 1.6.13.6 へのアップデートをしたところ
ブログ形式の画面が表示できなくなってしまいました。

アップデート方法は、以下の順番で行いました。
1.6.11.4 → 1.6.12 → 1.6.13.5 → 1.6.13.6

■ 制作・開発モードを「ノーマルモード」にした場合、以下の内容となります。
1.サイト上に表示されているエラーメッセージは以下になります。
--
エラー : リクエストされたアドレス '/' はこのサーバにありませんでした。
--

2.管理画面でブログ形式の編集ページを開くと以下のメッセージが表示されます。
--
404 NOT FOUND
エラー : リクエストされたアドレス '/admin/blog/blog_posts/index/2' はこのサーバにありませんでした。
--

■ 制作・開発モードを「デバッグモード1」にした場合、以下の内容となります。
1.サイト上に表示されているエラーメッセージは以下になります。
--
データベーステーブルがありません
エラー:モデルBlogTagのデータベーステーブルbc_pg_blog_tagsが見つかりません。
--

BaserCMSのバージョンを「1.6.10」に戻したところ、
正常に表示できております。

ご教示ください。

■ BaserCMSのバージョン:1.6.10
■ レンタルサーバー名:さくらインターネット
■ スマートURLの利用: ON
■ 設置フォルダ: ドキュメントルート
■ 利用しているデータベース: MySQL
■ PHPスキル(自己評価): E
arata > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/19 11:30
こんにちは!peerさん。

ちょっと調べてみたところ、ブログにはタグ機能が追加されていて、それを保存するための容器がない状態ですね。
というわけで、データベースにMySQLを利用されているようなので、phpmyadminでご利用のデータベースを開き、
以下のSQL文を実行してみて下さい。

CREATE TABLE `bc_pg_blog_tags` (
  `id` int(8) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  `modified` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;


これだけで解消出来なかったときは、また何か書込に来て下さいね!
では御機嫌よう!

■ 不明点解消できるかも。逆引きガイドもあります baserCMS公式wiki
■ Twitter:@arata

ryuring > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/19 12:25
peerさん

おそらく、1.6.10 → 1.6.11 へのバージョンアップで失敗しているのが原因のようです。

今時間がないので、調べてまたご報告しますね。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

peer > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/20 0:20
arataさん。

ご回答ありがとうございます。
bc_pg_blog_tagsのCREATE文を実行してみましたが、
次は別のテーブルが見つかりませんと表示されます。

--
エラー: モデル BlogPostsBlogTag のデータベーステーブル bc_pg_blog_posts_blog_tags が見つかりません。
--

CREATE文の定義は、baserフォルダのどこかにあるのでしょうか?
ありましたら教えていただけないでしょうか?

おそらく、次にbc_pg_blog_posts_blog_tagsのCREATE文を実行したとしても
他のblog系のテーブルが見つからないと言われそうでしたので
とりあえず足りないテーブルを全て実行してからまた報告させていただこうかと思いまして。
ryuring > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/23 1:54
peerさん

現在のバージョンはいくつでしょうか?

もし、1.6.10 に戻されているのであれば、
アップデートの際、まず、1.6.11.4にアップしてください。

1.6.11.4 では、CakePHPのアップデートも入っていますので、事前に、cake フォルダも上書きする必要があります。
こちらは対応されましたでしょうか?
http://basercms.net/news/archives/103

そして、管理画面よりアップデートを実行するのですが、
アップデート完了後、画面に表示されるログを確認してください。
赤文字のメッセージがあればアップデートに失敗しています。

まずはここまでを確認してください。


ちなみに、アップデートスクリプトは次のURLよりバージョンごとに実行することができます。
※ こちらは開発用の為、自己責任でお願いします。
http://{baserCMSの設置URL}/admin/updaters/exec_script
対象システムを選択し、バージョン番号を入力して、実行ボタンをクリックします。


また、CREATE文の件ですが、baserCMSでは、複数のデータベースに対応するため、CakeSchemaという仕組みを利用しており、SQL文を梱包しておりません。DBの生成は、PHPの定義ファイルによって行われます。

ちなみに定義ファイルの場所は次のとおりです。
■ コア
/baser/config/sql/
■ ブログ
/baser/plugins/blog/config/sql/
■ メール
/baser/plugins/mail/config/sql/
■ フィード
/baser/plugins/feed/config/sql/


Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

ryuring > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/23 2:00
追記です。

定義ファイルを実行する環境はあります。

http://{baserCMSの設置URL}/admin/tools/load_schema
定義ファイルをアップロードしてテーブルを生成します。

ちなみに定義ファイルを作成するURLはこちらです。
http://{baserCMSの設置URL}/admin/tools/write_schema

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

peer > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/26 22:57
ryuringさん。

ご回答ありがとうございます。

引用:
もし、1.6.10 に戻されているのであれば、
アップデートの際、まず、1.6.11.4にアップしてください。

1.6.11.4 では、CakePHPのアップデートも入っていますので、事前に、cake フォルダも上書きする必要があります。
こちらは対応されましたでしょうか?
http://basercms.net/news/archives/103

そして、管理画面よりアップデートを実行するのですが、
アップデート完了後、画面に表示されるログを確認してください。
赤文字のメッセージがあればアップデートに失敗しています。



1.6.10 から1.6.11.4 にアップしてみました。
しかし、管理画面からログインしても
アップデート処理へのリンクが表示されず、そのままログインできただけでした。
そのためログも確認できない状況です。

しかし、管理画面のフッターには、
1.6.11.4 とバージョンの情報が表示されております。

この状態では、ブログ形式のページはまだ表示されず、エラーが表示されているのみです。
--
エラー: モデル BlogPostsBlogTag のデータベーステーブル bc_pg_blog_posts_blog_tags が見つかりません。
--


引用:
定義ファイルを実行する環境はあります。

http://{baserCMSの設置URL}/admin/tools/load_schema
定義ファイルをアップロードしてテーブルを生成します。


以上の方法を使用して「blog_posts_blog_tags.php」の定義ファイルを実行してみました。
この状態でブログ形式のページが表示されました!!

しかし、管理画面にログインし、ブログ形式のページを見ようとすると
管理画面上に以下のメッセージが表示されます。
--
Notice (8): Undefined index: tag_use [CORE/baser/plugins/blog/views/blog_posts/admin/index.ctp
--

「index.ctp」の「tag_use」を使用している行がおかしいと以上のメッセージが2件表示されております。



引用:
ちなみに、アップデートスクリプトは次のURLよりバージョンごとに実行することができます。
※ こちらは開発用の為、自己責任でお願いします。
http://{baserCMSの設置URL}/admin/updaters/exec_script
対象システムを選択し、バージョン番号を入力して、実行ボタンをクリックします。


アップデートスクリプトは、開発用とのことで実行しかねております。
(他に方法がない場合、最終手段として試そうかと思っております。)

お手数かけますが宜しくお願いします。
ryuring > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/8/26 23:36
こんばんは。

1.6.11 では、ブログのタグ機能が追加されているのですが、やはりそちらのアップデートがうまくいっていないのですね。
こちらの環境で試してみたのですが、こちらでは正常動作するので環境を見ない事にはなんとも言えない状況です。

tag_use の件ですが、blog_contents テーブルにtag_use フィールドが生成されてないのが原因だと思います。
tag_use というフィールドを追加してください。
MySQLの場合、型:tinyint / サイズ 1 で、初期値は、1 です。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

peer > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/9/7 0:04
引用:
こんばんは。
tag_use というフィールドを追加してください。

tag_useフィールドを追加することで
公開ページも管理画面もブログ形式のページがエラーなく表示できるようになりました。
ありがとうございます。

続いて
1.6.11.4 から1.6.12 にアップデートしてみました。
しかし公開ページも管理画面も表示されますが、
制作・開発モードを「デバッグモード1」にした時だけ、管理画面のブログ形式の画面に遷移すると
以下のエラーが表示されてしまいます。
--
Warning (512): SQL Error: 1054: Unknown column 'BlogCategory.owner_id' in 'where clause' [CORE/baser/models/datasources/dbo_source.php, line 535]

Query: SELECT COUNT(*) AS `count` FROM `bc_pg_blog_categories` AS `BlogCategory` WHERE ((`BlogCategory`.`owner_id` IS NULL) OR (`BlogCategory`.`owner_id` = '1'))
--

制作・開発モードを「ノーマルモード」にした場合は、
公開ページも管理画面もエラーは表示されません。

お手数かけますが、引き続きアドバイスをお願いします。
ryuring > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/9/12 9:00
おはようございます。

v1.6.12 では、blog_categories テーブルに、owner_id フィールドが追加されています。

何故か、アップデートでデータベースの構造がうまくいっていないようですね。。
アップデート時には、ちゃんと「エラーメッセージ」は表示されましたか?

また、どのバージョンでDBに対してどのような変更が行われているかを知る為には、
アップデートスクリプトや、アップデート用CakeSchemaが格納されているフォルダを確認します。

コア・・・baser/config/update/
ブログ・・・baser/plugins/blog/config/update/
メール・・・baser/plugins/mail/config/update/
フィード・・・baser/plugins/feed/config/update/

一度上記のフォルダの中のファイルを除いてみてください。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

peer > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/10/22 2:21
こんばんは。

アップデートがうまくいかない原因が分かりましたので
報告致します。
メールフォームのページ名にハイフンが入っていることが原因でした。
例:test-test

BaserCMSの仕組みだと思うのですが、
以下の階層にPHPファイルを作成し、アップデート時にDB登録する処理があります。
(ファイル・クラス名にはページ名を使用している)
このハイフン付きのクラスを作成する部分で
エラーとなっていたと予想します。
(PHPのクラス名にハイフンをつけるのは命名規則的にNGのため)
--
baser\plugins\mail\config\sql
--

以上のことを気付かずに
1.6.10 → 1.6.11.4 → 1.6.12とアップデートしたり
元のバージョンに戻したり色々と試していました。
その結果、既にテーブル構造が変わっているのに
テーブル定義を変更するアップデートを実行したり、
BaserCMSのアップデート時に登録されたデータをもう一度登録しようとして
SQLの一意制約エラーになっていました。


対処方法は、ちょっと面倒でしたが以下の通りです。

■ページ名のハイフンを変更する
管理画面からページを変更してもDB構造の変更ができないとエラーになります。
そのため全て手動です。
1.phpMyAdminを使用してテーブルの定義をエクスポートする(CREATE・INSERT文等)
2.対象のページに関連するテーブル(test-test)があると思いますので
エクスポートしたCREATE・INSERT文のテーブル名の部分を変更(test_test)し手動で登録する。
3.最後に変更前のテーブル(test-test)を削除する
4.BaserCMSが管理している全てのテーブルのデータで
「test-test」というページ名をデータにもつテーブルを修正する

以上の対応でページ名にハイフンを含まない名前に変更できました。

■BaserCMSのアップデートでテーブルがおかしい件
1.http://{baserCMSの設置URL}/admin/tools/load_schemaを使用し
 前のバージョンのテーブル定義に変更。
 アップデート時にテーブル定義の変更だけでなく
 データも登録される場合があるのでデータも元に戻す。
2.http://{baserCMSの設置URL}/admin/updaters/exec_scriptを
 使用して最新のテーブル定義にアップデートしました。

以上の2つの対応でなんとか1.6.13.6 にアップデートできました。
かなり強引な対応方法かもしれませんが、
今のところ正常にページが表示されています。

色々とアドバイスいただき、ありがとうございました。
対処方法で問題・不足等ありましたらご指摘ください。
ryuring > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/10/24 13:45
peerさん、詳細なご報告ありがとうございます。

調査したところ、メールフォームのコンテンツ名にハイフンが使えないというのは、PHPというより、MySQLのドライバ側の問題のようでした。
ハイフン付のコンテンツ名を利用した場合、メールフォーム用のログテーブルが生成されず、不整合がおきるようになっていました。
ご指摘のとおりアップデートがうまくいかなかったのもそれに関連している可能性があります。

メールコンテンツ名にハイフンが使えない件についてはフィックスしましたので必要な方は下記URLよりパッチをご利用ください。
http://project.e-catchup.jp/issues/1751

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

peer > Re: バージョンアップが出来ません(1.6.10→1.6.13.6) @ 2011/10/31 22:52
ryuringさん。

メールコンテンツ名にハイフンが使えない件の
ご対応ありがとうございます。

1.6.10→1.6.13.6へバージョンアップが
できない件は解決しましたので
ステータスを解決済みとさせていただきます。

ありがとうございました。
今後とも宜しくお願い致します。