データベースの移行(URLも変更)した際にMODx Parse Errorになります??  【解決済み】

質問全般・改善要望
返信する
cheeseburger
メンバー
メンバー
記事: 14
登録日時: 2010年10月11日(月) 05:50

データベースの移行(URLも変更)した際にMODx Parse Errorになります??  【解決済み】

投稿記事 by cheeseburger »

既存のMODxを使用しているサイトからバックアップマネージャーにてSQLファイルを取得し、
別のURLにMODxを新規インストールをしphpMyAdminを用いて、取得したSQLファイルをインポートしました。
管理画面を見る限り、インポートは成功しており、URLを変更したので、
rb_base_dir(assetsディレクトリまでのパス)・filemanager_path(ファイル管理機能で扱える範囲のパス)も
新しいURL用にパスを変更しました。
※rb_base_dir・filemanager_pathが変更されているのも確認済みです。
バージョンも1.0.4J-r1→1.0.4J-r2で変更しておりません。

ただ管理画面のプレビューで見ると、ページが表示されるのですが、
ログアウト状態(URLを直打ちや検索)でサイトを確認すると下記のエラーメッセージがでます :?: :?:


« MODx Parse Error »

MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 »
SQL: SELECT setting_name, setting_value FROM `×××××××`.`modx_user_settings` WHERE setting_name='manager_language' AND user=
[Copy SQL to ClipBoard]

Parser timing
MySQL: 0.0006 s (0 Requests)
PHP: 0.0260 s
Total:

宜しくお願い致します。
最後に編集したユーザー cheeseburger [ 2010年10月11日(月) 12:46 ], 累計 1 回
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by sama55 »

cheeseburgerさんこんにちは

移動元と移動先の情報(条件)がもう少し明らかにならないと、有効な回答を得るのは難しいかもしれません。

・同一サーバーか?
・新旧のドメイン/フォルダ構成は?
・新旧のMODxのバージョンは?
・などなど

「既存のMODx」のDBを、「別のURLに新規インストールしたMODx」に食わせたようですが、なぜこのような操作を行ったのかが疑問に感じました。
通常は、ファイル群とDBをセットで移動した上で、ソースファイルとDB内を少しづつ変更することでURLの変動に伴う問題をクリアしていきますよね・・・?

直接原因の調査は、エラーになるSQLをよく調べることからはじめてみてはいかがでしょう?
エラーになるSQL文をphpMyAdminにコピペしてみるとか・・・
cheeseburger
メンバー
メンバー
記事: 14
登録日時: 2010年10月11日(月) 05:50

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by cheeseburger »

sama55様

返信ありがとうございます。
説明が不足しており、申し訳ありません。

・同一サーバーか?
→同一サーバーでの移行です。
・新旧のドメイン/フォルダ構成は?
→フォルダ構成は全く同じです。
・新旧のMODxのバージョンは?
→(旧)1.0.4J-r1から(新)1.0.4J-r2

「既存のMODx」のDBを、「別のURLに新規インストールしたMODx」に食わせたようですが、なぜこのような操作を行ったのかが疑問に感じました。
通常は、ファイル群とDBをセットで移動した上で、ソースファイルとDB内を少しづつ変更することでURLの変動に伴う問題をクリアしていきますよね・・・?
→おっしゃる通りなのですが、イメージファイルを移行して、rb_base_dir・filemanager_pathさえ変えれば、上手いこといくんじゃないかと思い、やってみました。
動機はただそれだけだったのですが、気持ち悪かったのでフォーラムに投稿いたしました。
宜しくお願い致します。
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by sama55 »

cheeseburger さんが書きました:・新旧のMODxのバージョンは?
→(旧)1.0.4J-r1から(新)1.0.4J-r2
リビジョンアップなのでDBの構造が変わる可能性は低いと思いますが、こういう操作は一般的に危険(というか、ご法度)かと。
cheeseburger さんが書きました:「既存のMODx」のDBを、「別のURLに新規インストールしたMODx」に食わせたようですが、なぜこのような操作を行ったのかが疑問に感じました。通常は、ファイル群とDBをセットで移動した上で、ソースファイルとDB内を少しづつ変更することでURLの変動に伴う問題をクリアしていきますよね・・・?
→おっしゃる通りなのですが、イメージファイルを移行して、rb_base_dir・filemanager_pathさえ変えれば、上手いこといくんじゃないかと思い、やってみました。
動機はただそれだけだったのですが、気持ち悪かったのでフォーラムに投稿いたしました。
新規にインストールしたので、古いキャッシュが残ってることはないですよね。でも、バックエンドではうまく表示されてフロントではダメ、という結果を考えるとキャッシュが怪しい気がします。

やはり最初に指摘した以下の手順で調べるのが手っ取り早い気が・・・

>> 直接原因の調査は、エラーになるSQLをよく調べることからはじめてみてはいかがでしょう?
>> エラーになるSQL文をphpMyAdminにコピペしてみるとか・・・
アバター
hiwatashi
メンバー
メンバー
記事: 6
登録日時: 2010年10月04日(月) 04:32

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by hiwatashi »

はじめまして。いつもお世話になっております。
ご参考になるかどうか分からないのですが、私の環境で似たような状況がありましたのでご報告いたします。

私は、OSX10.6.4にMAMP1.9(PHP5.2.13、MySQL5.1.44)のローカル環境でMODxのサイト構築準備を行っています。
かなりマシンを立ち上げっぱなしで数日間作業していた合間に、MODx Evolution 1.0.4J-r2→1.0.4J-r3へのバージョンアップを行いました。
その際は問題なく動作しており、また昨日までも問題なく動作しておりました。

しかし、先ほどブラウザを再起動させてから、cheeseburgerさんと同様のパースエラーが出ます。
いくつか問題を切り分けたつもりなのですが、下記がおそらく発生条件です。

・サイトは「公開」状態ではなく「メンテナンス」状態
・管理画面からログアウトした状態で(つまりメンテ状態の)コンテンツを表示させようとするとパースエラー

MODx 管理画面は問題なく表示されるうえ、ログインしてからの挙動も問題ないので(ログインしたらメンテナンス状態は関係ないため)、どうもメンテナンス中のページを表示させる機能に問題があるような気がいたします。

ちなみにこの状況は1.0.4J-r2でも一度遭遇しており、そのときは原因が分からず、管理画面に入れたからいいや〜的な考えて放置していました。

ご参考になりましたら幸いです。
アバター
hiwatashi
メンバー
メンバー
記事: 6
登録日時: 2010年10月04日(月) 04:32

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by hiwatashi »

上記の補足です。
document.parser.class.inc.phpを上書きし、イベントログを取得してみました。

SEO Strict URLsプラグインを導入しており、「Folder」にしたリソース、「Append Extension」にしたリソースをログアウトした状態で表示しましたが、いずれもエラー「Error. Check event log.」が表示され、下記のイベントログが記録されております。
  • aliasがindexで「Append Extension」にしたリソース

コード: 全て選択

« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 »
      SQL: SELECT setting_name, setting_value FROM `データベース名`.`modx_user_settings` WHERE setting_name='manager_language' AND user=
      [Copy SQL to ClipBoard]
 
Basic info
  REQUEST_URI:     /index.html
  ID:     
  Current Snippet:     ""
  Referer:     http://localhost:8888/
  User Agent:     Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; ja-JP-mac; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
 
Parser timing
  MySQL:     0.0024 s    (0 Requests)
  PHP:     0.0091 s     
  Total:     0.0115 s
  • aliasがindexで「Folder」にしたリソース

コード: 全て選択

« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« Execution of a query to the database failed - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 »
      SQL: SELECT setting_name, setting_value FROM `データベース名`.`modx_user_settings` WHERE setting_name='manager_language' AND user=
      [Copy SQL to ClipBoard]
 
Basic info
  REQUEST_URI:     /
  ID:     
  Current Snippet:     ""
  Referer:     
  User Agent:     Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; ja-JP-mac; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10
 
Parser timing
  MySQL:     0.0005 s    (0 Requests)
  PHP:     0.0041 s     
  Total:     0.0046 s
アバター
hiwatashi
メンバー
メンバー
記事: 6
登録日時: 2010年10月04日(月) 04:32

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by hiwatashi »

さらに補足です。
上記エラーに出ていたSQL文をphpMyAdminに貼り付けてみたところ、

コード: 全て選択

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 30' at line 2
上記のように表示されました。
あまりSQLについては詳しくなく……恐縮です。
アバター
hiwatashi
メンバー
メンバー
記事: 6
登録日時: 2010年10月04日(月) 04:32

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by hiwatashi »

もろもろ解決しましたのでご報告いたします。

原因としては、QuickManagerなどのプラグインをアップデートしていなかったことでした。
メンテナンスモードに関係ある?という件は、関係ないことが判明した次第です。

……お恥ずかしい抜けでした。お騒がせして申し訳ございません。
sama55
メンバー
メンバー
記事: 816
登録日時: 2009年8月03日(月) 08:16

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by sama55 »

hiwatashiさん、ご協力感謝します。

エラー文のキーワードをもとにソースをgrepしたところ、Quick Manager+が気になりました。

ソース: assets/plugins/qm/qm.inc.php (L62)
$query = 'SELECT setting_name, setting_value FROM '.$this->modx->getFullTableName('user_settings').' WHERE setting_name=\'manager_language\' AND user='.$_SESSION['mgrInternalKey'];

※上記の$_SESSION['mgrInternalKey']が取れないことがあるとか・・・

Quick Manager+は、本家版(1.0.4)ではV1.3.4、対して日本版(1.0.4J)ではV1.5.Xが同梱されており、qm.inc.phpのL62に違いが見られます。

★試しに、Quick Manager+を停止("プラグインを停止"をチェック)したらどうなるでしょう?★

あと、Quick Manager+はV1.4あたりからOnParseDocumentイベントを見るようになって、プラグインソース内で管理画面にログインしているかどうかを判断せずに処理してるような・・・ここも何となく怪しいような・・・
アバター
hiwatashi
メンバー
メンバー
記事: 6
登録日時: 2010年10月04日(月) 04:32

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by hiwatashi »

sama55 さんが書きました: ★試しに、Quick Manager+を停止("プラグインを停止"をチェック)したらどうなるでしょう?★
Quick Manager+を停止してログアウトし、コンテンツを表示させたところ、問題なくメンテナンス中の画面が表示されるようになりました。
アップデートでインストーラーを使うときに、プラグインやスニペットのほとんどを上書きせずにいたのが原因のようです。
ちなみに、最初はインストーラーを使わずにコアファイルのみ(managerフォルダ)を上書きしていましたので、managerフォルダとassetsフォルダ内のファイルの整合性がとれなくなったのではないかと思います。

再度インストーラーを使ってアップデートをかけるとき、Quick Manager+もアップデートしまして、その後はプラグインを有効にした状態でもパースエラーが出ることはなくなりました。

バージョンアップがあった場合にはプラグインやスニペットもちゃんとアップデートすべきでしたね。
たいへんお騒がせいたしました。
cheeseburger
メンバー
メンバー
記事: 14
登録日時: 2010年10月11日(月) 05:50

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by cheeseburger »

ご連絡遅くなりました。
皆様、色々とご意見ありがとうございます。
QuickManagerが原因でした。

詳細の結果は追ってご報告させていただきます。
cheeseburger
メンバー
メンバー
記事: 14
登録日時: 2010年10月11日(月) 05:50

Re: データベースの移行(URLも変更)した際にMODx Parse Errorになります??

投稿記事 by cheeseburger »

下記のように解決いたしましたので、ご報告致します。

データをリストアした時に拡張機能も古いものに巻き戻ってしまったのが原因でした。
installフォルダをアップロードし直して、もう一度上書きアップデートした結果、拡張機能が新しい状態になり解決いたしました。

MODxの拡張機能は、機能の本体がDBに登録されていて、共有機能などは外部ファイルにまとめてあることが多いようです。
その為、古い本体が新しい外部ファイルにアクセスをしていた結果、問題が生じたのが原因でした。

皆様ありがとうございました。
返信する