コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 11:25

新しいページタイプを追加し、そのページタイプをコンポーザー選択可にし、管理画面にてコンポーザーの「書く」をクリックすると、「予期せぬエラーが発生しました」が表示されます。
ちなみに新しいページをコンポーザーで選択可能にしなかった場合、コンポーザーの「書く」をクリックすると「まだどのページタイプもコンポーザー設定がされていません。」と表示されます。
新しく追加したページタイプが悪さをしているのでしょうか?
ログには何のエラーも出力されていません。
この現象が起きて解決できた方、いらっしゃいましたら、ご教授お願いします。

タグ:

Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 11:41
concrete5のエラーには、システムから補足可能なエラー(例外と言います)しか保存されません。それ以上の致命的なエラーが出ている可能性があります。その場合は、サーバーのPHPのエラーログを見ると、原因が判明します。
 

Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 11:50
お返事ありがとうございます。
Apacheの「php_error_log」には何も出力されていませんでした。
 

Re: Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 12:03
デバッグレベルを変更すると下記エラーが発生しました。

mysqlt error: [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 1' at line 1] in EXECUTE("select max(cDisplayOrder) from Pages where cParentID = LIMIT 1")

調べます。
 

Re: Re: Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 12:27
cDisplayOrderの最大値を1件取得したいSQLですよね?
で、これはSQLの構文エラーですね。
「cParentID = LIMIT 1」 は「cParentID = xx LIMIT 1」が正しいですよね?
このSQLはどこで発行しているのでしょう?
 

Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 12:32
新しいページを作成する際には、サイトマップ上の並び順を決める必要がありますので、最大値を取得しています。みたところ、親ページのIDが設定されていませんので、コンポーザー設定で親ページとして指定したページを削除したりしませんでしたか?
 

Re: Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 12:51
親ページを削除した覚えはないのですが、確認してみます。

ちなみに、このSQLは、concrete/core/models/pagge.phpの1792行目で発行してますね。
「array($this->getCollectionParentID())」で取得できないみたいですね。

※すみません。ページタイプを追加する際の親ページって何なのでしょう?
 

Re: Re: Re: コンポーザーで予期せぬエラーが発生します。

2015年5月25日 at 14:18
ちなみに、コンポーザー公開設定は「 公開時にすべてのページから選択する。」を選んでいます。
なので、コンポーザーの「書く」を選択してデータを入力後、親ページを選択したいのです。
 

Re: コンポーザーで予期せぬエラーが発生します。

2015年5月29日 at 22:15
お世話になっております。

同現象は未だに解決しておりません。
手動でどこかのテーブルにエラーがでないデータを INSERT すれば解決しますか?

ご教示よろしくお願いします。
 

Re: コンポーザーで予期せぬエラーが発生します。

2015年6月12日 at 18:45
お世話になっております。

concrete5のcoreな部分を調査していますが、未だ解決の糸口は見つかっておりません。

操作のおさらいです。
1.ブログのページ等必要がないものは全て削除しています。
   ※ホーム以外は何もない状態です。
   ※コンポーザーの種類もひとつしかありません。
2.ホーム配下に独自のページタイプ(商品カテゴリー)を選択して商品カテゴリー数分、ページを新規追加しています。
3.コンポーザーを書くを選んで、商品ページを作成します←ここで、エラーが発生しています。

やりたい事はコンポーザーを使って商品の情報を入力し、情報を入力し終わったあと、商品ページをどの商品カテゴリー配下に公開するか指定したいのです。
よって、親が何になるかはページを公開するまでわかりません。

現在はコンポーザーで書くを使えないので、フルサイトマップを表示し、商品ページを公開したい商品カテゴリーページを選んで、その配下に商品ページを作成しています。

そもそも、ホーム以外のページを全て削除する行為が間違っているのでしょうか?

ご教示、よろしくお願いします。
 

Re: コンポーザーで予期せぬエラーが発生します。

2015年6月12日 at 22:01
私もコアのコードを確認しましたが分かりません。見たことがない現象ですし
実際のサイトを見せていただくしかないかな…と思っています
 

Re: コンポーザーで予期せぬエラーが発生します。

2017年8月4日 at 16:28
2年前のスレッドですが、私のところでも似たような現象が発生したので報告しますね。

まず私が遭遇した問題の発生原因は
システムページにある「下書きページ」を移動、または削除した事により発生しました。
※今回の場合はシステムページ直下の「下書きページ」であり、コンポーザーの配下にある「下書きページ」ではありません

以下対応内容

■関連するデータベース
・collections
・collectionversions
・pages
・pagepath

■対応した内容
・collections
cIDが108のレコードの有無を確認し、レコードがなければ以下のクエリを発行
INSERT INTO `collections` (
`cID` ,`cDateAdded` ,`cDateModified` ,`cHandle`
)
VALUES (
'108', '2016-01-22 14:35:07', '2016-01-22 14:35:07', '!drafts'
);

・collectionversions
cIDが108のレコードの有無を確認し、レコードがなければ以下のクエリを発行
INSERT INTO `collectionversions` (
`cID`, `cvID`, `cvName`, `cvHandle`, `cvDescription`, `cvDatePublic`, `cvDateCreated`, `cvComments`, `cvIsApproved`, `cvIsNew`, `cvAuthorUID`, `cvApproverUID`, `ptID`, `ctID`, `cvActivateDatetime`
) VALUES (
'108', '1', 'Drafts', '!drafts', NULL, '2015-08-31 09:28:05', '2015-08-31 09:28:05', 'Initial Version', '1', '0', '1', NULL, '5', '0', NULL);
※ptIDは別途調整する必要があるかもですcID109の「t!rash」と合わせれば動くかと



・pages
cIDが108のレコードの有無を確認し、レコードがなければ以下のクエリを発行
INSERT INTO `pages` (
`cID` ,
`cIsTemplate` ,
`uID` ,
`cIsCheckedOut` ,
`cCheckedOutUID` ,
`cCheckedOutDatetime` ,
`cCheckedOutDatetimeLastEdit` ,
`cOverrideTemplatePermissions` ,
`cInheritPermissionsFromCID` ,
`cInheritPermissionsFrom` ,
`cFilename` ,
`cPointerID` ,
`cPointerExternalLink` ,
`cPointerExternalLinkNewWindow` ,
`cIsActive` ,
`cChildren` ,
`cDisplayOrder` ,
`cParentID` ,
`pkgID` ,
`cCacheFullPageContent` ,
`cCacheFullPageContentOverrideLifetime` ,
`cCacheFullPageContentLifetimeCustom` ,
`cIsSystemPage`
)
VALUES (
'108', '0', '1', '0', NULL , NULL , NULL , '1', '1', 'PARENT', '/!drafts/view.php', '0', NULL , '0', '1', '0', '0', '0', '0', '-1', '0', '0', '1'
);

・pagepath
cIDが108のレコードの有無を確認し、レコードがなければ以下のクエリを発行

INSERT INTO `pagepaths` (`ppID`, `cID`, `cPath`, `ppIsCanonical`) VALUES ('104', '108', '/!drafts', '1');