テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」
well > テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」 @ 2014/7/4 23:04 |
---|
baserCMS関係者の皆様、こんにちは。
wellです。 いつもお世話になっております。 最近はもう少し使えるようになりたいので、CakePHPの方を学んで baserCMSの方はしばらく触っていなかったのですが、 久々にまたいじり始めたところ、早速問題発生してしまいました。 スケルトンから改造して作っているテーマがあるのですが、 nada_iconsの初期データで確認してみたいところがあったので、 現在のテーマを変えて、初期データをリセットし読み込み、 そしてまた元の自分のテーマに戻して、リセット後、これまで何度か節目で「テーマ用初期データダウンロード」で 落として保存しておいたdefault_???の初期データを読み込んだところ、
以上のようなエラーが発生し、正常にデータを読み込めなくなってしまいました。 PHPエラー的には、実行時間制限にひっかかってしまっているようなので php.iniファイル内のデータを max_execution_time = 30 ↓ max_execution_time = 90● に変えるなどして、再度データ読み込みを行ったところ、 現在のテーマがエラー時のデフォルト?のm-singleに変わり、
というメッセージが上に出ました。 早速ログを探し、/app/tmp/logs/error.logを見たところ、
以上のように、Blog、Feed、Mailの3つプラグインのcsvデータをSQLでDBに読み込ませる時に、 重複エラーが出てしまっていました。 今まではこのようなことはなく、「テーマ用初期データダウンロード」で落としたフォルダを webroot/theme/***/Config/data内に入れておくだけで済んでいたと記憶していますが、 データを作り始めてから、他のテーマに変えてもリセットはして来なかったからでしょうか? この状態で、現在のテーマを、自分の作成しているテーマに変えて、ブラウザで確認してみると以下の現象等が起こっています。 ・メニュー一覧が、リセット時のメニュー名と重なって、重複していたり、不要なメニュー名が残ってる。 ・メールプラグインの入力フォームのフィールドが重複(何度もやったので3つ4つ)して出力されている。 解決策として考えられるのは、上記の3つのプラグインのcsvファイルを削除しておくことでしょうか? でも、これは良策には思えないところです。 出来れば今まで通り、「テーマ用初期データダウンロード」で落としてそのまま使う方法でなんとかなればいいのですが。 以上です。 基本的に私の認識不足から来ている問題かもしれません。 ご指摘、ご指導いただけると幸いです。 よろしくお願いいたします。 ■ BaserCMS:3.0.6.1 |
goichi > Re: テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」 @ 2014/7/10 10:07 |
---|
こんにちは。
「テーマの初期データを読み込むと、本来それが上書きされるはずなのに、上書きできずに、プライマリキーの重複でエラーがでてしまっている」って感じの認識で良いでしょうか? 何となくバグの予感もするのですが、こちらを参考にデータベースなどの環境を記載してもらっても良いでしょうか? (署名に入れて頂いている情報だけだと、DBなどの情報がないので、同じような環境を作って試すことが出来ません) 追伸: ちなみに、初期データを書きだした段階ではブログなどのプラグインが「有効」になっていたと思うのですが、読み込みの際はどうでしたか(一時的に止めていたとか無いでしょうか)? |
well > Re: テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」 @ 2014/7/10 17:29 |
---|
goichi様、
はじめまして、wellです。 引用:
PHPは、Version 5.4.26です。 mysqlは、basercmsの環境情報から引用します。
引用:
ブログなどのプラグインは最初の設定以来ずっと「有効」にしています。 まず、私の状況を説明しますと、最新のデータが入った初期データ読込の読込に失敗しデータが使い物にならなくなったため vagrant destroyし、少し前のデータが入っているboxで再構築しました。 私は、仮想マシンをwebサーバとmailサーバの複数同時起動設定している都合上(config.vm.boxは一つのboxしか指定できない)、 vagrantの手軽な再構築のメリットが減っていることもあり、設定にやや手間がかかりました。 最新データは、basercmsのテーマ管理のテーマ用初期データダウンロードで落としたもののみでしたので、 phpmyadminのインポート機能で手動でこのSQLファイルデータをテーブルに入れ直す作業を行いました。 このまま再度再現実験すると元の木阿弥ですので、テスト用Boxを作り、再現実験をしてみました。 このテスト用Boxは修正後の最新データが入っている状態です。 ここからまず、nada_iconsのテーマに変更後、データリセット。 これで、「初期データの読み込みが完了しました。」のメッセージが出ました。 ブラウザを見ると、nada_iconsのテーマですが、グローバルメニューリストが、私が設定したデータのままです。 次に、defaultの初期データ読込。 これでまた、「初期データの読み込みが完了しました。」のメッセージが出ました。 ブラウザを見ると、今度は、グローバルメニューリストが本来のnada_iconsのデフォルト状態になっています。 次に、現在のテーマを私のものに変更。 この時点でブラウザを見ると、私のテーマに変わり、グローバルメニューリストはnada_iconsのデフォルト状態のまま。 次に、データリセットをしてみます 「初期データの読み込みが完了しました。」のメッセージが出ました。 ブラウザを見ると、私のテーマで、グローバルメニューリストが私の設定したものに変わりますが、 私が最初に「テーマ用初期データダウンロード」をして得たdefaultの状態のようで ウィジェットはほぼ空、検索窓のセレクトボックス未表示の状態です。 次に問題の、テーマ用初期データダウンロードで得た、最新の「default_ver1_1」で、初期データ読込をします。 やはりエラーがでました
ブラウザを見ると、エラー時デフォルトのm-singleになっています。 この時点でデータベースを見てみます。 ●_menuテーブルを見ると idの1から、default_ver1_1のデータが入っているようですが、nameが文字化けしています。 csvファイルのインポートがうまくいっていないようです。 そして、default_ver1_1のデータの次に、idの後順で、defaultのデータが入っています。 こちらは文字化けしていません。 つまりdefault_ver1_1のデータが前に割って入り、なぜか最初のdefaultのデータがその後にまた追加されている状態です。 今度は、●_blog_commentsテーブルを見てみます。 ブログプラグインのデータは最初に設定して以来いじっていませんが、 id=1のデータと同じものが3つ追加されている状態です。 createdを見るとどうやら、先ほどのdefault_ver1_1初期データ読込処理で時間がかかっていましたが、3回連続で同じSQLが実行されたようです。 次に●_site_configsテーブルを見てみます。 こちらは正常に入っているようです。 一か所valueに日本語がありますが、文字化けしていません。 私にはどういう現象が起こっているかちょっと解りかねる状況です。 次に、m-singleになってい現在のテーマを、私のテーマに変えブラウザを確認します。 グローバルメニューリストは、案の定一部文字化けし、dafultとdefault_ver1_1のメニューが混在しているようです。 ウィジェットのページカテゴリーリストもすべて文字化けしています。 次に、テーマ一覧で、データリセットをしてみます。 「初期データの読み込みが完了しました。」のメッセージが出ました。 ブラウザを見ると、最初のdefaultのデータで正常に表示されました。 データベースで各テーブルを見ると、大きな問題はなさそうですが、1つ、 ●_blog_commentsテーブルや●_blog_categoriesテーブルのデータに2つの同じ重複データが入っていました。 createdの時間は、先ほど処理した時間の数秒違いになっています。 次に、/etc/php.ini内の max_execution_time=30 を max_execution_time=150 に変更して、仮想マシンをリロード もう一度default_ver1_1で初期データを読み込んでみます。 表記の状態ではなく 初めて見るエラーが出ました
データベースの各テーブルを確認すると・・・ 基本的に最初にdefault_ver1_1で初期データを読み込んだ時と同じ症状ですが。 今度は、先ほどは正常だった●_site_configsテーブルで、文字化けした重複データが割って入っていました。 次に、管理画面のテーマ一覧ページをリロードしてみました。 すると、表記の、「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。ログを確認してください。」 のメッセージが出ました。 以上です。 私からは説明しづらい現象になってしまっています。 goichi様の環境で再現できればよいのですが・・・ ■ BaserCMS:3.0.6.1 |
goichi > Re: テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」 @ 2014/7/14 22:57 |
---|
バタバタしていて、返信が遅くなりました。
公式のVagrant環境で試したところ(たぶん同じ環境ですよね?頂いた情報を見る限りそうだと思うのですが・・・)、私の方では特に問題なく、 0.デフォルトテーマからスケルトンにテーマ変更 1.スケルトンをカスタマイズした状態で「初期データダウンロード」 2.nada-iconの適用(初期データ読込) 3.スケルトンを再び適用、1でダウンロードした初期データ読込 で、特にエラーが起きること無く動いています。 一応、お確かめ頂きたいのは、現在お使いの3.0.2というのは、 ・別バージョンからのアップデートですか?(3.0.2からだとデフォルトテーマはnada-iconじゃないかも?) ・GitHubからダウンロードしたのであれば、最新のもの(次期バージョン開発中のもの)ではなく、タグで3.0.2を選択してダウンロードしていますか?(安定版?) また、色々とやり直していらっしゃるうちに、意図せず(それがbaserCMSなのかphpMyAdminでの作業なのか分かりませんが) 引用: 表記の状態ではなく というような状況になってしまっているのだと思います。一番最初に何故エラーがでたのか、そこが分かりませんが、もしも、お時間が許すのであれば、一度、公式リポジトリのタグ:3.0.2をダウンロードしてもらって、同封のVagrant環境を利用し、問題のテーマを適用してみると、案外、スッキリするかもしれません。 不確実な情報で、申し訳ないのですが、とりあえずコチラで試した感じでは、上のような結果でした。 追伸:現在、公式のVagrant環境で問題が発生しています。通常通りVagrantをupし、一度baserCMSをインストールしたのち、haltして、Vagrantfileの42行目付近を以下のように修正すると動作するようです。
|
n1215 > Re: テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」 @ 2014/7/15 21:10 |
---|
well 様
こんにちは。 最新のbaserCMSのリポジトリで試して何とかなっていたら読み飛ばしてください。 初回の「default_ver1_1」読込時にすでにデータベースが異常な状態になってしまっているのではないでしょうか。 それ以降の試行の際にはすでにデータベースが壊れている(≒そもそも開発者が意図していないのでこの状態に対応するコードが書かれていないという意味で)ので、 通常の操作のみでデータベースの状態を正常に回復させることが不可能になっていると推測します。 まずは初回の「default_ver1_1」読込時のエラーの原因が 1.PHPの実行が中断されたこと 2.その他の原因(文字コード?) 3.1と2両方 このうちどれであるか切り分けが必要ですね。 最初のエラーが出る前にあらかじめPHPの最大実行時間を150秒程度に延長しおいてから試しても結果は同じでしょうか? ●実行時間を延長するとエラーが出ない場合 この対応で何とかなるなら初回の実行中断が主な原因ということになります。 (マシンスペックによって実行時間も変化しますし、PHPの実行中断のタイミングによっても2回目以降のエラーの症状が左右されるため再現度が低かったと考えられます) 読込に異様に時間がかかっている原因を探り、可能であればbaserコアのコードないし件の「default_ver1_1」のデータを修正したいところです。 ●実行時間を延長してもエラーが出続ける場合 実行時間が十分でも同じエラーが出続けるようであれば初回のエラーに絞って1つずつ再現条件と原因を探りましょう。 特にデータベースや設定ファイルなど、PHPの実行をまたいでデータを永続化させる部分にエラーが出た状態で続けて作業をしてしまうと、 初回のエラーの影響が絡んでくるので2回目以降のエラーの原因の切り分けと症状の再現は非常に困難です。 長期戦になりますがよろしくお願いします。 Twitter: @n_1215 |
well > Re: テーマ管理 「初期データの読み込みが完了しましたが、いくつかの処理に失敗しています。」 @ 2014/7/16 23:04 |
---|
goichi様、n1215様、
ご回答ありがとうございます。 まず本節に入る前に、お話させていただきます。 最終目的は、表記の問題でバグがあるのか明らかにすることであり、 この点は、n1215様のご指摘通り、数段階の処理の中で、エラーの原因がどれであるか切り分けることが重要ですね。 全段階を経て結果として現れた、目に見える主な気になる症状は、 ・文字化け ・データの重複 でした。 今回最終的には、一つの単純な結論が出ましたが、 そこにたどり着くまでに試行錯誤していた段階で、不思議な現象に何度か遭遇し、泥沼化しそうになりました。 それらの現象まで述べることは多大な混乱を招く恐れがあり今回は割愛させていただきます。 goichi様、 引用:
vagrant環境は、basercmsに付随している公式?のものではなく、 去年、ドットインストール様のサイトで学習させていたいた際に作ったものがベースで、 その後、色々な機能を試す際に、git、postfix、dovecot、xdebugなどを 随時独自に追加してきたものです。 これまで、vagrantに関しては特に問題なく動作しております。 引用:
現在使っている、basercms3.0.2は4/1にbaserCMSのHPのトップページよりDLした安定版を 新しい専用のBoxに入れたものです。 引用:
念のため、教えていただいた公式リポジトリからDLさせていただき、テスト用Boxに入れて再現実験を行うことにしました。初めて自分以外の方が作ったvagrantBoxを使うこともあり、諸々手間取りました。 vagrant destroy後、最小限の設定変更を心がけてvagrant環境を再構築。 まずはgoichi様の追伸の手順までその通りに。 次にこのままスマートURLをオンにするとbasercmsがおかしくなることがわかりましたので、 /etc/httpd/conf/httpd.conf の設定を以下のように一番わかりやすいノーマルなものに変更。
次にシンボリックリンク設定し直し
以上の設定変更後、vagrant reload 管理画面 システム設定 > サイト基本設定 から まず ・デバックモード1に変更 次に ・スマートURLをオンに変更 問題ないのを確認後、vagrant halt appフォルダを私がこれまで使っていたものに変えます。 database.phpの値だけ合わせるよう変更。 また、使用するdatabaseの中を空にし、現在問題なく動いて使っている default_ver1_1のcsvファイルをutfで保存し直して、phpmyadminで手動で入れて、 現在問題なく使っているデータをインポート(SQL形式)。 その他、 ・/etc/hostsに、自分のServerNameを設定 n1215様の以下のご指摘を受け 引用:
・php.iniで、max_execution_time = 30 → 150 に、予め変更 この状態をいつでも再構築したいので新しくboxをつくっておく。 ただし、公式のVagrantfileには、 下の方に、chefで、仮想マシン内のプログラムの設定変更を一括変更しているjsonが書かれているのを発見。 私はchefは使ったことはないのですが、 やってることは一目瞭然ですので、今回は、httpdの部分をコメントアウトし、 phpは、:max_execution_time => '30'を こちらも'150'に変更します。 # :httpd => { #コメントアウト # :servername => 'localhost:80', # :root => '/vagrant', # :webroot => '/vagrant/app/webroot', # :timeout => '60', # :listen => '80' # }, :php => { :max_execution_time => '150', ←変更 :memory_limit => '128M', :post_max_size => '32M', :default_charset => 'UTF-8', :upload_max_filesize => '16M' }, # chef.add_recipe "httpd" ←コメントアウト vagrant reloadしてブラウザで正常に動作することを確認後、 この状態をいつでも再構築したいので、vagrant packageで、新しくboxをつくっておく。 vagrant destroy後 Vagrantfile内のconfig.vm.boxを、新しく作った最新のボックスに変更。 vagrant up 以下のchefのエラーがでていた。 ただbasercmsは特に問題なく動いており またchefは経験ないので、相当の学習コストを払いそうなのでここではスルー [2014-07-16T11:27:52+00:00] ERROR: Running exception handlers [2014-07-16T11:27:52+00:00] ERROR: Exception handlers complete [2014-07-16T11:27:52+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-sta cktrace.out [2014-07-16T11:27:52+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef ru n process exited unsuccessfully (exit code 1) Chef never successfully completed! Any errors should be visible in the output above. Please fix your recipes so that they properly complete. これでとりあえず、再現実験前に、データベースのデータ、サーバーの設定など正常な状態のボックスが出来ました。 ------------------------------------------------------------------------------ ここから再現実験 > テーマ管理 > テーマ一覧 テーマ管理メニュー テーマ一覧 > ・・・> データリセット ・現在のテーマ、私のテーマ、データも最新状態から、データリセットを押す!! →「初期データの読み込みが完了しました。」 →以前初めて作った、defaultのデータがセットされた。 ・ブラウザを見ると、一見問題なさそうですが、お問合せの入力フォームのフィールドが2つずつになっていた。 ・データベースの各テーブルを確認すると、 ・***_favoritesテーブルのデータが、user_idが1から3で、3つの重複データになっている。createdは1秒違い。 ・***_pg_blog_categoriesテーブルのデータがidが1と2に、2つの重複データが入っている。createdは2秒違い。 ・***_pg_blog_commentsテーブルも、***_pg_blog_categoriesテーブルと同様。 ・***_pg_blog_contentsテーブルも同様。 ・***_pg_blog_postsテーブルも同様。 ・***_pg_blog_posts_blog_tagsテーブルも同様。 ・***_pg_blog_tagsテーブルも同様。 ・***_pg_feed_configsテーブルも同様。 ・***_pg_feed_detailsテーブルも同様。 ・***_pg_mail_configsテーブルも同様 ・***_pg_mail_contentsテーブルも同様 ・***_pg_mail_fieldsテーブルも同様 問題が発覚しましたので、今回はここまでとさせていただきます。 ◆結論 現在作成中のテーマを現在のテーマにしている状態で、データリセットを押すと、 blog、feed、mail関係のテーブルでデータが重複状態になりました。 これがその後の処理に悪影響を及ぼしている可能性が高そうです。 ◆追伸 今回この処理で文字化けは出ませんでした。この件は整理が出来た時点でお話できればと思います。 ■ BaserCMS:3.0.6.1 |