PowerCMS Xでモデルの新規作成に失敗する場合

投稿日: 更新日:

レアケースだと思うのでメモ。

通常、管理画面よりモデルを新規作成すると、idカラムは必ず作成されるが、作成されてない事例に遭遇した。

問題の概要

その際の具体的な手順と動作として、CMS管理画面からモデルの新規作成画面を開き、設定値を入力して「保存」ボタン押下。
レスポンスを待っていたが、タイムアウトになってしまった。
その直後管理画面を開きなおしてみたが、エラー画面には遷移せず正常系の画面が開き、モデルの管理画面を見ると、先の手順で作成しようとしたモデルが出来ていた。
その時点でCMSのシステムログを確認したが、係るエラーメッセージも無く、モデルを新設した旨のみ記録されていた。

しかし、編集画面を開いてみるとidカラムが存在しない。
また、その状態で、何かしら設定値を更新してモデルの編集画面の「保存」ボタンを押しても、反応せず。

対応

AIに聞くと、次のいずれかでは?というが、

  • MySQLの行サイズ上限(Row size too large)
  • PHP の max_input_vars の制限

管理画面のUIから新規にモデル作成する場合は、そんなに多くのカラムを一度に定義しないので、当てはまらないと思われた。

CMS標準のtools/repair.php を使ってDBとの不整合を修復する事も考えられたが、お客様運用中の環境にいきなりやるのは抵抗あるし、そもそもSSHの権限が無い。
そこで一旦管理画面から対象のモデルを削除の上、やり直したところ、今度はidカラムが作成された。

見解

原因ははっきりせずだが、他の処理で負荷のかかるタイミングでモデルの新規作成のリクエストを送ってしまったからかもしれない。
心当たりとしては、ログを見るに、CMSのスケジュールタスクの実行時と被ったのかもしれない。

関連するタグ

PowerCMS X 3.22, モデル