0

在 DKAN 中安装 Fields Permissions Drupal 模块后,每当我尝试在 DKAN 中查看我的数据集目录时都会显示错误。我可以通过导航到各自的超链接来查看各个数据集。

错误:SQLSTATE [HY000]:一般错误:3065 ORDER BY 子句的表达式 #1 不在 SELECT 列表中,引用不在 SELECT 列表中的列“dkan_opendatatest.t.changed”:这与 DISTINCT 不兼容

关于如何解决这个问题的任何想法?

4

2 回答 2

0

我在 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 应该已经修复,但似乎我也需要删除一些休息。

于 2016-12-27T19:47:46.963 回答
0

这可能是驱动搜索页面的视图。下拉列表希望该字段是一个选择列表,但该字段的更改使该视图生成 MySQL 不支持的 SQL 查询。

您可以通过编辑“/admin/structure/views/view/dkan_datasets/edit/panel_pane_1”中的视图并更改“排序标准”中的“索引节点:更改日期”来解决此问题。不确定您的更改将是什么正确的“排序标准”设置,但您希望可以通过更改“排序标准”从那里弄清楚。也许删除并重新添加“更改”字段。

于 2016-10-20T13:45:39.990 回答