我在 Drupal 访问 admin/content 和 admin/people 页面时也遇到了类似的错误:
People[user_admin_people] 中的异常:SQLSTATE[HY000]:一般错误:3065 ORDER BY 子句的表达式 #1 不在 SELECT 列表中,引用列 'mycmsschema.users_field_data.created' 不在 SELECT 列表中;这与 DISTINCT 不兼容
它输出的查询在 Mysql Workbench 中运行良好,但在访问这些页面时在 Drupal8 中没有运行。
Mysql 5.7 似乎不喜欢 Drupal8 查询(也可能有 7 个查询但没有检查)。需要降级到 Mysql 5.6(因此不默认为超级严格的 sql_mode 设置,例如 Mysql 5.7 中的默认设置 ONLY_FULL_GROUP_BY)或进入 core/lib/Drupal/Core/Database/Driver/mysql/Connection.php
并改变:
/*
'sql_mode' => "SET sql_mode = 'ANSI,STRICT_TRANS_TABLES,STRICT_ALL_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,ONLY_FULL_GROUP_BY'",
*/
到:
'sql_mode' => "SET sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'",
这对我有用。
注意:认为只删除 ONLY_FULL_GROUP_BY 应该已经修复,但似乎我也需要删除一些休息。