DataEase v2 使用外部 MySQL 8 数据库安装时,需要注意外部数据库的安装配置和推荐的配置一致,如果出现如下报错,可检查数据库配置对应部分是否出错。
外置 MySQL 配置参考如下。
[mysqld]
datadir=/var/lib/mysql
default-storage-engine=INNODB
character_set_server=utf8
lower_case_table_names=1
table_open_cache=128
max_connections=2000
max_connect_errors=6000
innodb_file_per_table=1
innodb_buffer_pool_size=1G
max_allowed_packet=64M
transaction_isolation=READ-COMMITTED
innodb_flush_method=O_DIRECT
innodb_lock_wait_timeout=1800
innodb_flush_log_at_trx_commit=0
sync_binlog=0
group_concat_max_len=1024000
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
skip-name-resolve
\[mysql\]
default-character-set=utf8
`[mysql.server]
default-character-set=utf8`
1 报错如下 {#1-%E6%8A%A5%E9%94%99%E5%A6%82%E4%B8%8B}
error code [3065]; Expression #1 of ORDER BY clause is not in SELECT list;
Request failed with status code 400;
2 解决方法 {#2-%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95}
查看 sql_mode 是否包含 ONLY_FULL_GROUP_BY ,如有包含,按选择下列方法之一修改即可。
注意:如果该数据库被其它服务使用,修改可能或造成其它服务出现问题。
SELECT @@GLOBAL.sql_mode;
方法一全局会话修改
对所有新连接有效,需要重启 DataEase 服务;
SET GLOBAL sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
方法二 MySQL 的配置文件修改
打开 MySQL 的配置文件,路径通常是 /etc/my.cnf 或 /etc/mysql/my.cnf。在 [mysqld] 部分添加或修改 sql_mode;
[mysqld]sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'