windows下设置mysql的sql_mode

本文详细介绍MySQL中SQL_MODE的作用及如何通过命令行查看当前设置。同时,提供了修改my.ini文件来调整SQL_MODE的方法,确保数据库操作符合严格的标准,避免潜在的数据错误。

1、mysql命令行查看sql_mode:select version(),@@sql_mode;

2、修改mysql安装目录下的my.ini文件:如果只有一个my.ini.txt文件,那就复制一份my.ini.txt创建一个my.ini文件

# 设置sql模型   sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql_mode=NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER

3、重启后将永久生效:

 

 

 

### 设和调整 MySQLsql_mode 参数的方法 在 MySQL 中,`sql_mode` 是一个系统变量,用于定义 SQL 语句的执行方式。通过配 `sql_mode`,可以启用或禁用某些特性,从而控制错误处理、数据验证等行为[^2]。以下是如何设和调整 `sql_mode` 参数的具体方法。 #### 1. 查看当前的 `sql_mode` 要查看当前会话或全局的 `sql_mode` 设,可以使用以下查询: ```sql -- 查看当前会话的 sql_mode SELECT @@SESSION.sql_mode; -- 查看全局的 sql_mode SELECT @@GLOBAL.sql_mode; ``` 这些查询将返回当前会话或全局范围内的 `sql_mode` 值,通常是以逗号分隔的模式列表形式显示。 #### 2. 修改当前会话的 `sql_mode` 可以通过以下命令修改当前会话的 `sql_mode`,但这种修改仅对当前会话有效,关闭会话后设将失效[^4]: ```sql SET SESSION sql_mode = 'STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY'; ``` #### 3. 修改全局的 `sql_mode` 如果需要永久更改 `sql_mode` 的设,可以使用以下命令进行全局修改。需要注意的是,这种方式会影响所有新创建的会话,但不会影响已经存在的会话[^4]: ```sql SET GLOBAL sql_mode = 'STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY'; ``` #### 4. 在配文件中设 `sql_mode` 为了确保每次启动 MySQL 服务时都应用特定的 `sql_mode` 设,可以在 MySQL文件(如 `my.cnf` 或 `my.ini`)中添加以下内容[^4]: ```ini [mysqld] sql_mode=STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY ``` 保存配文件后,重启 MySQL 服务以使更改生效。 #### 5. 常见的 `sql_mode` 模式及其作用 以下是常用的 `sql_mode` 模式及其功能说明: - **STRICT_ALL_TABLES**:启用严格模式,要求更严格的数据类型匹配和插入、更新操作[^1]。 - **ONLY_FULL_GROUP_BY**:禁止在 GROUP BY 查询中选择未聚合且未出现在 GROUP BY 子句中的列[^3]。 - **NO_ZERO_IN_DATE**:禁止日期字段中包含零值,例如 `0000-00-00`。 - **NO_ENGINE_SUBSTITUTION**:当指定的存储引擎不可用时,MySQL 不会自动替换为其他引擎,并抛出警告[^4]。 #### 6. 最佳实践 - 根据应用程序的需求选择合适的 `sql_mode` 模式组合。 - 在开发和测试环境中启用严格的 `sql_mode` 模式,以便尽早发现潜在的数据问题。 - 避免在生产环境中随意更改 `sql_mode`,以免影响现有应用程序的行为。 ```sql -- 示例:设严格的 sql_mode SET GLOBAL sql_mode = 'STRICT_ALL_TABLES,ONLY_FULL_GROUP_BY,NO_ZERO_IN_DATE,NO_ENGINE_SUBSTITUTION'; ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值