ラック
Home > CMS > 記事 > 2016年6月 > MODxインストール後、管理画面でエラー

MODxインストール後、管理画面でエラー

カテゴリ: MODx

テストのため、MODx Evo 1.0.14J-r9をMySQL5.7環境にインストールしたところ「MySQLがストリクトモードですがよろしいですか?」と警告を発せられました。

ちょっと時間がなかったので、警告を無視してそのままインストール完了。

画面上は無事にインストールが完了したかのように見えましたが、その後にログインしてみると…ダッシュボード部分に下記のようなエラーが出てしまい、正常に管理画面が表示されませんでした。


≪ MODX Parse Error ≫

MODX encountered the following error while attempting to parse the requested resource:
≪ Execution of a query to the database failed - Expression #1 of ORDER BY clause is not in SELECT list, references column 'MODXDB.sm.editedon' which is not in SELECT list; this is incompatible with DISTINCT ≫
SELECT DISTINCT sm.id, sm.name, mg.member FROM `MODXDB`.`modx_site_modules` AS sm LEFT JOIN `MODXDB`.`modx_site_module_access` AS sma ON sma.module = sm.id LEFT JOIN `MODXDB`.`modx_member_groups` AS mg ON sma.usergroup = mg.user_group WHERE (mg.member IS NULL OR mg.member=1) AND sm.disabled != 1 ORDER BY sm.editedon DESC

...
(略)
...

Basic info
REQUEST_URI :	/manager/index.php?a=2
Manager action :	2 - Viewing home page/ online users

...
(略)
...

Backtrace

1	include_once()
manager/index.php on line 241
2	DBAPI->select()
manager/actions/welcome.static.php on line 145
3	DBAPI->query()
manager/includes/extenders/dbapi.mysql.class.inc.php on line 250

ダッシュボードの表示のためにDBクエリでエディション情報やユーザ情報などを抜き出している部分があるようなのですが、その部分でコケているようです。

エラーを見る限り、ORDER BY句関連でしょうか。

過去こういった症例はなかったですし、エラー内容からMySQL5.7が原因であることは想像に難くないですね。

インストール途中に警告が出ていましたし、ストリクトモードが原因でしょうね…。

ストリクトモードとは、直訳すると「厳格なモード」。

INSERTやUPDATE実行時に不正な値を入れないようにするためのもので、型やサイズが違ったりするとそれに厳正に対処するというモードのようです。

場合によっては勝手に値が切り詰められたりしてクエリ結果が意図したものと異なるものになる可能性があるので、注意を要します。

…おそらくインストール時の初期の書き込みでストリクトモードで何らかの辺りが弾かれ、結果として必要な情報が書き込めなくなって管理画面で上記のエラーを吐いている、というような挙動になったものと思われます。

 

ということで、ストリクトモードを解除してから再度インストールし直してあげれば良さそうです。

ストリクトモードの解除には、


sql_mode=''

を[mysqld]のスコープに記述してあげてMySQLサーバを再起動してあげれば良いです。

[mysqld]のスコープでなければならず、[client]など他のスコープに記述してもダメです。注意しましょう(焦って末尾に記述したら[client]の下だったので有効になっておらず、ちょっと嵌まりました)。


# vi /etc/my.cnf

編集する設定ファイルは上記。仮想サイトごととか、環境やシチュエーションによって編集するファイルは変わるかもしれませんが、全体だったら上記で。


[mysqld]
...
(略)
...

sql_mode=''

[client]
...
(略)


こんな感じでsql_modeのストリクトモードを無効に。


# service mysqld restart

MySQLを再起動してあげます。

 

この後、MODxを最初からインストールし直して上手く行きました。

インストールのテストだったので細かい挙動は見ていませんが、これで問題ないのではないかなー、と。

タグ: システム設定周り, トラブル対処

 



関連する記事一覧