我使用的是 MariaDB 10.2.4。默认情况下,sql_mode 包括 STRICT_TRANS_TABLES,这在大多数情况下都很好。但在特定情况下,我希望数据被截断。有没有办法暂时覆盖 sql_mode,或者 INSERT 语句的选项可以显式允许截断?我在文档中或通过谷歌搜索找不到任何内容。
您可能会认为这是 Should I disable MySQL strict mode? 的重复项,但那个问题是 2011 年的,所以从那时起可能会有新的选择。另外,这个问题是关于一般模式的最佳实践,而不是关于在运行时覆盖的能力。
最佳答案
Is there a way to override the sql_mode temporarily
是的,您可以通过在 INSERT 之前触发 SET sql_mode = 'mode';
语句来更改此设置。
https://mariadb.com/kb/en/mariadb/sql-mode/#setting-sql_mode :
The session value only affects the current client, and can be changed by the client when required.
因此,如果您在之后立即将其设置回来,则可以确保它仅对该特定 INSERT 语句生效。
关于mysql - 在严格模式下截断 INSERT 作为异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45212365/