[mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
时间: 2023-10-11 18:12:56 浏览: 187
这是一个MySQL配置文件中的sql_mode设置,它定义了MySQL对于数据插入和查询的严格性检查级别。具体来说,该设置包括以下几个参数:
1. STRICT_TRANS_TABLES:如果插入或更新操作违反了表定义的约束条件,则会导致警告或错误。
2. NO_ZERO_IN_DATE:禁止在日期中使用零值,例如 '0000-00-00'。
3. NO_ZERO_DATE:禁止日期列中的零值,默认情况下,MySQL允许使用 '0000-00-00' 表示无效日期。
4. ERROR_FOR_DIVISION_BY_ZERO:如果除数为零,则会引发错误。
5. NO_ENGINE_SUBSTITUTION:如果指定了一个不存在的存储引擎,MySQL将引发错误。
这些设置可以确保数据的完整性和一致性。当MySQL检测到违反这些设置的操作时,它会引发警告或错误,防止不合规的数据被插入或查询。
相关问题
.. D:\mysql\bin\mysqld.exe: Error while setting value 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CR' to 'sql_mode'.
这个错误是由于在设置 `sql_mode` 时出现问题导致的。`sql_mode` 是 MySQL 中的一个配置选项,用于控制 SQL 执行的一些行为。
该错误提示中显示了要设置的值为 `'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CR'`,但是这个值可能存在问题,导致设置失败。
你可以尝试以下几个步骤来解决这个问题:
1. 确认 MySQL 服务是否正在运行,如果没有运行,请启动 MySQL 服务。
2. 使用管理员权限打开命令提示符或 PowerShell。
3. 在命令提示符或 PowerShell 中执行以下命令来连接到 MySQL 服务器:
```
mysql -u <用户名> -p
```
根据你的实际情况替换 `<用户名>` 为你的 MySQL 用户名,然后输入密码,按回车确认。
4. 连接成功后,执行以下命令检查当前的 `sql_mode` 配置:
```
SELECT @@sql_mode;
```
确保返回的结果与你想要设置的值不冲突。
5. 如果需要修改 `sql_mode` 配置,可以使用以下命令进行修改:
```
SET GLOBAL sql_mode='新的sql_mode值';
```
将 `'新的sql_mode值'` 替换为你想要设置的实际值。
6. 执行完上述命令后,再次执行 `SELECT @@sql_mode;` 命令来确认修改已成功应用。
如果问题仍然存在,请提供更多的错误信息或上下文,以便更好地帮助你解决问题。
sql_mode=only_full_group_by
在MySQL 5.7版本后,默认开启了SQL_MODE严格模式,其中一个选项是sql_mode=only_full_group_by。这个模式要求在进行group by聚合操作时,select语句中的列只能是出现在group by中的列或者使用聚合函数(如max()、min()等)。如果不符合这个规则,就会报错。
为了解决这个问题,你可以按照下面的方法进行操作:
1. 在MySQL配置文件中的[mysqld]模块下新增一行配置:sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'。这样可以将sql_mode的设置更改为允许使用所有的模式,包括only_full_group_by。
2. 修改你的SQL语句,确保select中的列要么是出现在group by中的列,要么是使用了聚合函数。例如,你可以修改你的SQL语句为:select uid from user_order group by uid; 这样就不会再报错了。
3. 如果你不想修改MySQL的全局配置,你可以在每个需要执行的SQL语句前加上SET sql_mode='';来临时关闭严格模式。这样在执行完这个语句后,严格模式就会恢复。但这种方法并不推荐,因为可能会导致其他的潜在问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [MySQL提示sql_mode=only_full_group_by解决办法](https://blog.csdn.net/M__L__/article/details/126806559)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
阅读全文