问题标签 [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 回答
65 浏览

mysql - MYSQL 严格模式

对于 STRICT_ALL_TABLES,MySQL 返回错误并忽略其余行。但是,由于较早的行已被插入或更新,结果是部分更新。为避免这种情况,请使用单行语句,该语句可以在不更改表的情况下中止。

对于 STRICT_TRANS_TABLES,MySQL 将无效值转换为最接近该列的有效值并插入调整后的值。如果缺少值,MySQL 会插入列数据类型的隐式默认值。在任何一种情况下,MySQL 都会生成警告而不是错误并继续处理该语句。隐式默认值在第 11.6 节,“数据类型默认值”中描述。

我尝试设置 STRICT_TRANS_TABLE 并尝试在没有事务的情况下插入无效记录。尽管有记录,但它显示了一个错误。

  1. 非事务表是什么意思?
  2. 在上面,为什么它显示错误而不是警告?
  3. 如果两种模式都设置了怎么办?
0 投票
0 回答
21 浏览

mysql-8.0 - 在 Ubuntu 20.04 上为 MySQL 8 永久设置 sql-mode 的正确方法是什么?

我在带有 MySQL 8 的 Digital Ocean Ubuntu 20.04 上安装了一个新的 LEMP 堆栈。

从命令行我看到默认的 sql_mode 设置为:

我希望它简单地阅读:

我已阅读内容,但设置 sql-mode="ALLOW_INVALID_DATES" 不适用于 /etc/mysql 子文件夹中的许多 my.cnf 变体。Niether 执行“sql_mode”。所有排列要么被接受,但 mysql 服务重新启动失败(直到条目被删除),要么被接受,但任何运行 mysql CLI 的尝试都失败,说明 sql_mode 或 sql-mode 命令无法识别。

使用此选项设置有效:

但在不需要的服务/服务器重新启动时重置。

我在此配置步骤中做错了什么?