问题标签 [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.
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
返回一个随机结果。
我该如何解决这个问题?
mysql - 如何解决与 sql_mode=only_full_group_by 不兼容的错误
我今天发了一个帖子,但没有人回答我的问题。
我收到 SQL 错误“这与 sql_mode=only_full_group_by 不兼容”。我确实执行了这个 SQL 命令:
但它不起作用。错误仍然存在。
我无法调整数据库中的每个查询,因为它们太多了。我需要快速解决方案。有没有人可以帮助我?
mysql - SQL 查询 GROUP BY 子句出错;sql_mode=only_full_group_by
请帮我处理这个 SQL 查询;当我使用GROUP BY
子句时,我从 Mysql 收到此错误:
这与 sql_mode=only_full_group_by 不兼容
我想要列上的不同值:B.shopname。
mysql - MySql 在 RDS 和本地 docker 容器上的行为不同
我的本地 MySQL docker 容器和另一个环境中的 RDS 实例的行为存在差异。我已阅读有关此错误的文档以及sql_mode
. 但我无法弄清楚这种差异来自哪里。
- 我正在运行完全相同的脚本。
- 版本相同(MySQL 5.7.26),所有相关参数看起来都一样
- 在本地为 docker 我使用
mysql:5.7
默认命令的图像
我正在运行以重现该问题的脚本:
本地主机上的结果
RDS 上的结果
显然它不是sql_mode
参数而不是版本。这种行为上的差异还能从哪里来?
mysql - MYSQL 8:日期时间的 SQL 模式无效?
我知道,这很丑陋,但是过去可以正常工作,我们无法更改:
#1525 - 不正确的日期时间值:''
对于查询
MySQL 8 有 SQL 模式吗?或者有什么想法?
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,但上面的查询仍然会抛出错误。
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),因为它是从旧数据库中导入的,没有使用这些数据库...
php - AWS RDS SESSION 与 GLOBAL sql 模式设置值
我已经安装了一个新的 AWS RDS MariaDB,导入了我所有的表并且它已经启动并运行。在我的旧数据库中,我没有STRICT_TRANS_TABLES
设置,所以我必须遍历所有表并修改列以指定空值。在那之前,我想暂时禁用STRICT_TRANS_TABLES
它,以便我可以测试一些东西,然后我可以将其添加回来。
我能够@@SESSION
很好地修改 SQL 模式,但我仍然无法插入记录,因为某些插入是空的,所以我假设@@GLOBAL
仍然取代@@SESSION
SQL 模式。
我正在使用 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
取代了@@SESSION
SQL 模式?
更新
每当与我的数据库建立连接时,我都能够解决执行此查询的问题,但是是否有更永久的方法来执行此操作?
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
,但非全局具有!为什么,我能做些什么呢?
由于严格的规则生效,插入仍然失败。
mysql - 修改 MySQL 存储过程的“设置”
根据 MySQL 文档,存储过程是sql_mode
在创建它们的地方执行的。
我需要更改特定存储过程的 sql_mode 参数
SHOW CREATE PROCEDURE
command - 显示当前的 sql_mode
STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
如何改变它,特别是 - 删除严格模式
谢谢