我在表中有整数字段.POST由复杂的JavaScript发送.他们发送像""这样的空字符串但是你猜测MySQL不允许在整数字段中使用emty字符串.是否有允许空字符串的选项?就像它需要空字符串一样,它会将其保存为NULL.
ilh*_*han 18
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"从my.ini中删除已解决了该问题.
编辑:删除上面的行工作,但这是一个坏主意.它允许有像0000-00-00或空字符串日期之类的东西.最好保持上面的行,不要将空的sting插入整数字段,而是将空字符串转换为NULL,然后将NULL插入整数字段.
Mil*_*ani 18
有两种方法可以做到这一点.
首先执行查询以获取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)
如果result包含STRICT_TRANS_TABLES,则必须删除该值以允许insert query传递NULL值.确保您的mysql用户有权应用此更改并在应用此项后重新启动Mysql Server.
    SET GLOBAL sql_mode = '';
你必须更新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 Server.通常,root用户将是文件的所有者,因此您必须在服务器上以root用户身份登录.
有关详细信息,请了解此SQL模式的用途.
STRICT_TRANS_TABLES
为事务存储引擎启用严格的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
假设该列允许NULL值,您必须显式告诉 MySQL 使用值NULL,而不是传递空字符串(被转换为0):
INSERT INTO table (column_name) VALUES (NULL);