问题标签 [sql-mode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
87 浏览

mysql - 绕过 only_full_group_by 限制

我有这个简单的表:

deviceId我想选择最近的一行loggedAt。为了清楚起见,我在上表中用箭头标记了这些行。

如果我在上面的查询中追加 group by id,我会得到臭名昭著的:

SELECT 列表的表达式 #2 不在 GROUP BY 子句中,并且包含在功能上不依赖于 GROUP BY 子句中的列的非聚合列“foo.eventName”;这与 sql_mode=only_full_group_by 不兼容

而且我不想更改sql_mode.

我已经非常接近我想要使用的东西:

但显然any_value返回一个随机结果。

我该如何解决这个问题?

0 投票
0 回答
30 浏览

mysql - 如何解决与 sql_mode=only_full_group_by 不兼容的错误

我今天发了一个帖子,但没有人回答我的问题。

我收到 SQL 错误“这与 sql_mode=only_full_group_by 不兼容”。我确实执行了这个 SQL 命令:

但它不起作用。错误仍然存​​在。

我无法调整数据库中的每个查询,因为它们太多了。我需要快速解决方案。有没有人可以帮助我?

0 投票
1 回答
41 浏览

mysql - SQL 查询 GROUP BY 子句出错;sql_mode=only_full_group_by

请帮我处理这个 SQL 查询;当我使用GROUP BY子句时,我从 Mysql 收到此错误:

这与 sql_mode=only_full_group_by 不兼容

我想要列上的不同值:B.shopname。

0 投票
0 回答
111 浏览

mysql - MySql 在 RDS 和本地 docker 容器上的行为不同

我的本地 MySQL docker 容器和另一个环境中的 RDS 实例的行为存在差异。我已阅读有关此错误的文档以及sql_mode. 但我无法弄清楚这种差异来自哪里。

  • 我正在运行完全相同的脚本。
  • 版本相同(MySQL 5.7.26),所有相关参数看起来都一样
  • 在本地为 docker 我使用mysql:5.7默认命令的图像

我正在运行以重现该问题的脚本:

本地主机上的结果

RDS 上的结果

显然它不是sql_mode参数而不是版本。这种行为上的差异还能从哪里来?

0 投票
1 回答
123 浏览

mysql - MYSQL 8:日期时间的 SQL 模式无效?

我知道,这很丑陋,但是过去可以正常工作,我们无法更改:

#1525 - 不正确的日期时间值:''

对于查询

MySQL 8 有 SQL 模式吗?或者有什么想法?

0 投票
0 回答
139 浏览

php - 在 laravel 中允许无效日期

如果我直接在 PHPMyadmin 上运行它,但当我使用 laravel 运行它时,我有以下查询。

它抛出以下错误:

SQLSTATE [HY000]:一般错误:1525 日期值不正确:''0000-00-00'

我已在数据库中将 mysql_mode 设置为 ALLOW_INVALID_DATES。

在 laravel 中执行我的查询之前,也使用以下一个:

DB::statement("设置会话 sql_mode='ALLOW_INVALID_DATES'");

在 laravel conig/database.php 中,严格模式也设置为 false,但上面的查询仍然会抛出错误。

0 投票
1 回答
60 浏览

mysql - sql_mode 不兼容 codeigniter 4

我有一个查询,它在本地 wamp 服务器上运行良好,但上传到 mye 网络服务器给我一个错误。看过类似的解决方案,但无法理解它以适应我的查询。

错误:

我有 2 个表,一个带有分配的主表和一个计数转移到该分配的表

ex table vakter (assignement 在我的表中被命名为 oppdrag 并且 start/stop 被命名为 start/slutt)

vakt_id 赋值 ...
1 任务 1 ...

前表skift

skift_id vakt_id 开始 停止 ...
1 1 2021-06-21 17:00:00 2021-06-21 18:00 ...
2 1 2021-06-21 18:00:00 2021-06-21 21:00 ...

我想展示

赋值 开始 停止
任务 1 2021-06-21 17:00:00 2021-06-21 21:00

其中开始日期是 skift 中的最早时间,其中 vakt_id 为 1,停止日期是同一行中的最晚时间。

桌子

和表 2

我的查询

在 group by 中尝试了不同的值。

PS 不能在表一中使用 start /stop(slutt),因为它是从旧数据库中导入的,没有使用这些数据库...

0 投票
0 回答
89 浏览

php - AWS RDS SESSION 与 GLOBAL sql 模式设置值

我已经安装了一个新的 AWS RDS MariaDB,导入了我所有的表并且它已经启动并运行。在我的旧数据库中,我没有STRICT_TRANS_TABLES设置,所以我必须遍历所有表并修改列以指定空值。在那之前,我想暂时禁用STRICT_TRANS_TABLES它,以便我可以测试一些东西,然后我可以将其添加回来。

我能够@@SESSION很好地修改 SQL 模式,但我仍然无法插入记录,因为某些插入是空的,所以我假设@@GLOBAL仍然取代@@SESSIONSQL 模式。

我正在使用 MySQL Workbench 访问我的 RDS,当我尝试使用SET GLOBAL sql_mode = 'ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';但我得到Error Code: 1227. Access denied; you need (at least one of) the SUPER privilege(s) for this operation.

有什么方法可以让我@@GLOBAL使用 AWS RDS 修改 SQL 模式,我是否正确@@GLOBAL取代了@@SESSIONSQL 模式?

更新

每当与我的数据库建立连接时,我都能够解决执行此查询的问题,但是是否有更永久的方法来执行此操作?

0 投票
0 回答
36 浏览

mariadb - MariaDB 10.5 在 .cnf 中更改 sql_mode 不会更改 @@sql_mode,为什么?

Fedora Desktop 35 运行 MariaDB 10.5,大约一个月前全新安装。

为什么我的变化是/etc/my.cnf/mariadb-server.cnf sql_mode变化@@GLOBAL.sql_mode而不是变化@@sql_mode

我正在尝试STRICT_TRANS_TABLES从我的sql_mode(我有一个 DATETIME NOT NULL 列,我需要从 INSERT 中省略它并让它假定一个默认值)中删除。我的系统有一个简单的 MariaDB 安装,几乎是空/etc/my.cnf的,其中包括所有文件,/etc/my.cnf.d其中有一个mariadb-server.cnf[server]可以设置的部分sql-mode

如果省略,则默认为https://mariadb.com/docs/reference/mdb/system-variables/sql_mode/ to中指定的STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION。通过 SquirrelSQL 查询确认:

所以默认情况下两者@@sql_mode@@GLOBAL.sql_mode是等价的。

将此添加到mariadb-server.cnf[server]行已经存在):

重新启动服务器systemctl restart mariadb,日志中没有错误,然后从上面重新运行查询:

请注意,全局sql_mode不再具有STRICT_TRANS_TABLES,但非全局具有!为什么,我能做些什么呢?

由于严格的规则生效,插入仍然失败。

0 投票
1 回答
33 浏览

mysql - 修改 MySQL 存储过程的“设置”

根据 MySQL 文档,存储过程是sql_mode在创建它们的地方执行的。

我需要更改特定存储过程的 sql_mode 参数

SHOW CREATE PROCEDUREcommand - 显示当前的 sql_mode STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

如何改变它,特别是 - 删除严格模式

谢谢