答案 0 :(得分:2)
OP为此帖子为我创建了Wisdom of the Ancients条帖子。
我打开调试,看到此问题中讨论的错误:
How to resolve "ORDER BY clause is not in SELECT list" caused MySQL 5.7 with SELECT DISTINCT and ORDER BY。我使用的是Digital Ocean的Managed MySQL服务,无法修改全局设置或my.cnf
文件。
为了我未来的自我和其他流浪者。我的问题是MySQL的'ANSI'模式包含'ONLY_FULL_GROUP_BY'。
WordPress默认在/wp-includes/wp-db.php
中过滤掉'ONLY_FULL_GROUP_BY',但我的Managed SQL Server也默认设置了ANSI
。
我的解决方案是制作一个笨拙的WordPress小插件,以确保每次会话都将其删除。 https://fishy.getgit.co/fishy/remove-ansi-sql-mode
或者只是复制/粘贴:
<?php
/*
Plugin Name: Remove ANSI SQL_MODE
Version: 1.0
Description: Removes the 'ANSI' SQL MODE if it exists as it contains 'ONLY_FULL_GROUP_BY' since MySQL 5.7.5. See https://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_ansi
*/
class Remove_Ansi_Sql_Mode {
static function init(){
add_action('init', array( __CLASS__, 'strip_ansi_mode' ) );
}
static function strip_ansi_mode(){
global $wpdb;
// Copied from /wp-includes/wp-db.php
$incompatible_modes = array(
'NO_ZERO_DATE',
'ONLY_FULL_GROUP_BY',
'STRICT_TRANS_TABLES',
'STRICT_ALL_TABLES',
'TRADITIONAL',
'ANSI' // Adding ANSI
);
$sql_modes = explode(',', $wpdb->get_col( "SELECT @@SESSION.sql_mode" )[0]);
foreach ($sql_modes as $key => $value) {
if(in_array($value, $incompatible_modes)){
unset($sql_modes[$key]);
}
}
$wpdb->set_sql_mode($sql_modes);
}
}
Remove_Ansi_Sql_Mode::init();
答案 1 :(得分:0)
答案 2 :(得分:0)
更新到WooCommerce 3.6之后,我遇到了同样的问题。通过停用WP Term Images插件解决了该问题。