安装字段权限模块后Dkan Drupal错误

时间:2016-10-19 14:27:45

标签: mysql database drupal dkan

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

错误: SQLSTATE [HY000]:常规错误:3065 ORDER BY子句的表达式#1不在SELECT列表中,引用列' dkan_opendatatest.t.changed'它不在SELECT列表中:这与DISTINCT

不兼容

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

2 个答案:

答案 0 :(得分:0)

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

您可以通过编辑“/ admin / structure / views / view / dkan_datasets / edit / panel_pane_1”中的视图并更改“排序条件”中的“索引节点:更改日期”来解决此问题。无法确定您的更改中正确的“排序条件”设置是什么,但您可以通过更改“排序条件”来从中找出它。也许删除并重新添加“已更改”字段。

答案 1 :(得分: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设置,如ONLY_FULL_GROUP_BY,这是Mysql 5.7中的默认设置)或者进入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应该已修复,但似乎我需要删除一些休息。