gpt4 book ai didi

mysql - 如何在 MySQL 中允许整数为空字符串?

转载 作者:IT老高 更新时间:2023-10-28 23:50:37 25 4
gpt4 key购买 nike

我在表中有整数字段。 POST 由复杂的 JavaScript 发送。他们发送像 ""这样的空字符串,但正如您猜到的那样,MySQL 不允许在整数字段中使用空字符串。是否有允许空字符串的选项?就像它接受一个空字符串一样,它将把它保存为 NULL。

最佳答案

有两种方法可以做到这一点。

  1. 对于当前的 Mysql session (临时解决方案)

首先执行查询以获取您的 mysql 服务器的当前 SQL 模式。

    mysql> SELECT @@sql_mode;
+----------------------------------------------------------------+
| @@sql_mode |
+----------------------------------------------------------------+
|STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
+----------------------------------------------------------------+
1 row in set (0.00 sec)

如果结果包含 STRICT_TRANS_TABLES,您必须删除该值以允许插入查询传递 NULL 值。确保您的 mysql 用户有权应用此更改并在应用此后重新启动 Mysql 服务器。

    SET GLOBAL sql_mode = '';
  1. 对于 Mysql 的生命周期(永久解决方案)

您必须更新 my.cnf 文件。该文件的位置是:\etc\my.cnf 或\etc\mysql\mysql.cnf

在[mysqld]下会设置一些默认的参数比如

[mysqld]
innodb_file_per_table=1
default-storage-engine=MyISAM
performance-schema=0
max_allowed_packet=268435456
open_files_limit=10000

在下面加一行

sql-mode=""

确保在更改此文件后重新启动 Mysql 服务器。通常 root 用户将是文件的所有者,因此您必须使用 root 用户登录服务器。

了解更多详细信息以了解此 SQL 模式的作用。

STRICT_TRANS_TABLES

为事务性存储引擎启用严格的 SQL 模式,并在可能的情况下为非事务性存储引擎启用严格的 SQL 模式。有关详细信息,请参阅严格 SQL 模式。

引用:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_strict_trans_tables

NO_AUTO_CREATE_USER

防止 GRANT 语句自动创建新的用户帐户,除非指定了身份验证信息。该语句必须使用 IDENTIFIED BY 指定非空密码或使用 IDENTIFIED WITH 指定身份验证插件。

引用:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_auto_create_user

NO_ENGINE_SUBSTITUTION

当 CREATE TABLE 或 ALTER TABLE 等语句指定禁用或未编译的存储引擎时,控制默认存储引擎的自动替换。

引用:http://dev.mysql.com/doc/refman/5.7/en/sql-mode.html#sqlmode_no_engine_substitution

关于mysql - 如何在 MySQL 中允许整数为空字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28606483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com