<tfoot id='I9yRB'></tfoot>

      • <bdo id='I9yRB'></bdo><ul id='I9yRB'></ul>
    1. <legend id='I9yRB'><style id='I9yRB'><dir id='I9yRB'><q id='I9yRB'></q></dir></style></legend>

    2. <small id='I9yRB'></small><noframes id='I9yRB'>

      <i id='I9yRB'><tr id='I9yRB'><dt id='I9yRB'><q id='I9yRB'><span id='I9yRB'><b id='I9yRB'><form id='I9yRB'><ins id='I9yRB'></ins><ul id='I9yRB'></ul><sub id='I9yRB'></sub></form><legend id='I9yRB'></legend><bdo id='I9yRB'><pre id='I9yRB'><center id='I9yRB'></center></pre></bdo></b><th id='I9yRB'></th></span></q></dt></tr></i><div id='I9yRB'><tfoot id='I9yRB'></tfoot><dl id='I9yRB'><fieldset id='I9yRB'></fieldset></dl></div>

      MySQL sql_mode的使用详解

      我们来讲解一下MySQL sql_mode的使用。
      <tfoot id='ytrpO'></tfoot>
          <tbody id='ytrpO'></tbody>
      • <legend id='ytrpO'><style id='ytrpO'><dir id='ytrpO'><q id='ytrpO'></q></dir></style></legend>

          <i id='ytrpO'><tr id='ytrpO'><dt id='ytrpO'><q id='ytrpO'><span id='ytrpO'><b id='ytrpO'><form id='ytrpO'><ins id='ytrpO'></ins><ul id='ytrpO'></ul><sub id='ytrpO'></sub></form><legend id='ytrpO'></legend><bdo id='ytrpO'><pre id='ytrpO'><center id='ytrpO'></center></pre></bdo></b><th id='ytrpO'></th></span></q></dt></tr></i><div id='ytrpO'><tfoot id='ytrpO'></tfoot><dl id='ytrpO'><fieldset id='ytrpO'></fieldset></dl></div>

            • <bdo id='ytrpO'></bdo><ul id='ytrpO'></ul>
            • <small id='ytrpO'></small><noframes id='ytrpO'>

                我们来讲解一下MySQL sql_mode的使用。

                什么是MySQL sql_mode

                MySQL sql_mode 是 MySQL 提供的一种配置,用于控制 MySQL 在执行 SQL 语句时的行为。它定义了一组规则,来判断 SQL 语句是否合法,以及如何处理 SQL 语句中的错误。

                MySQL sql_mode 常见的取值

                1. STRICT_TRANS_TABLES

                • 描述:在严格模式下,如果有任何非法数据插入到一个事务表中,就会报错并回滚事务。
                • 取值:STRICT_TRANS_TABLES 或者不指定。
                • 示例:创建一张名为 mytable 的表,包含一个整数类型的列 id 和一个字符串类型的列 name,同时设置 STRICT_TRANS_TABLES 模式。
                  ```
                  CREATE TABLE mytable (
                  id INT NOT NULL,
                  name VARCHAR(10) NOT NULL,
                  PRIMARY KEY (id)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

                SET sql_mode = 'STRICT_TRANS_TABLES';
                INSERT INTO mytable (id, name) VALUES ('1', 'MySQL');
                ```

                2. STRICT_ALL_TABLES

                • 描述:在严格模式下,所有插入到表中的非法数据都会报错。
                • 取值:STRICT_ALL_TABLES 或者不指定。
                • 示例:创建一张名为 mytable 的表,包含一个整数类型的列 id 和一个字符串类型的列 name,同时设置 STRICT_ALL_TABLES 模式。
                  ```
                  CREATE TABLE mytable (
                  id INT NOT NULL,
                  name VARCHAR(10) NOT NULL,
                  PRIMARY KEY (id)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

                SET sql_mode = 'STRICT_ALL_TABLES';
                INSERT INTO mytable (id, name) VALUES ('1', 'MySQL');
                ```

                3. ANSI_QUOTES

                • 描述:启用后,所有使用双引号的字符串被视为标识符,而不是字符串,因此必须使用反引号来转义标识符。
                • 取值:ANSI_QUOTES 或者不指定。
                • 示例:创建一个名为 "mytable" 的表,并设置 ANSI_QUOTES 模式。
                  SET sql_mode = 'ANSI_QUOTES';
                  CREATE TABLE "mytable" (
                  "id" INT NOT NULL PRIMARY KEY,
                  "name" VARCHAR(10) NOT NULL
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

                MySQL sql_mode 的设置方法

                1. 设置全局 sql_mode

                在 MySQL 配置文件 my.cnf 或者 my.ini 中,通过设置 sql_mode 的值来控制 MySQL 的 sql_mode 行为。例如:

                [mysqld]
                ...
                sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION'
                

                设置完毕后,需要重启 MySQL 服务,才能生效。

                2. 设置会话级别 sql_mode

                使用以下 SQL 语句,来设置会话级别 sql_mode:

                SET sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
                

                在这个会话中,所有的 SQL 语句都会遵循这个 sql_mode 规则。如果需要恢复原来的 sql_mode 值,可以使用以下命令:

                SET sql_mode = '';
                

                总结

                MySQL sql_mode 可以帮助我们避免在 SQL 语句执行时遇到一些意料之外的坑,提高了数据的完整性。

                推荐在开发过程中启用 sql_mode,尽量在生产环境中也开启,尤其对于重要数据的表格,例如账户、财务数据等,更应开启sql_mode来增强数据的安全性。

                本站部分内容来源互联网,如果有图片或者内容侵犯了您的权益,请联系我们,我们会在确认后第一时间进行删除!

                相关文档推荐

                下面是针对PostgreSQL中的权限问题的完整攻略。
                MySQL是一种流行的关系型数据库系统,它提供了多种时间类型和模式,用于存储和处理时间数据。本文将详细介绍MySQL时间类型和模式的详细攻略。
                首先在官网下载CentOS7镜像,并在VMware虚拟机中新建一台CentOS7虚拟机,将镜像挂载到虚拟机中并启动。
                首先,当我们使用Spring Boot开发项目时,可能会遇到Error starting ApplicationContext错误,一般这种错误是由于配置文件、依赖包或者代码逻辑等原因引起的。下面我将提供一条包含两条详细示例说明的完整攻略,用来解决上述问题。
                下面我将详细讲解如何为PostgreSQL数据库中的用户授予权限和撤销权限,包括两个实例。
                MySQL中出现lock wait timeout exceeded问题的原因是由于两个或多个事物同时请求相同的资源造成的,并且在某一时刻至少一个事务无法获取资源,超过了MySQL默认的等待时间,从而导致事务失败。这种问题的出现会极大地影响数据库的性能和并发能力。
                  <tbody id='ckAHt'></tbody>

                  <legend id='ckAHt'><style id='ckAHt'><dir id='ckAHt'><q id='ckAHt'></q></dir></style></legend>
                    <bdo id='ckAHt'></bdo><ul id='ckAHt'></ul>

                      1. <small id='ckAHt'></small><noframes id='ckAHt'>

                        <i id='ckAHt'><tr id='ckAHt'><dt id='ckAHt'><q id='ckAHt'><span id='ckAHt'><b id='ckAHt'><form id='ckAHt'><ins id='ckAHt'></ins><ul id='ckAHt'></ul><sub id='ckAHt'></sub></form><legend id='ckAHt'></legend><bdo id='ckAHt'><pre id='ckAHt'><center id='ckAHt'></center></pre></bdo></b><th id='ckAHt'></th></span></q></dt></tr></i><div id='ckAHt'><tfoot id='ckAHt'></tfoot><dl id='ckAHt'><fieldset id='ckAHt'></fieldset></dl></div>
                        • <tfoot id='ckAHt'></tfoot>