Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mysql服务器上将null定义为整数值?_Mysql_Null_Integer - Fatal编程技术网

如何在mysql服务器上将null定义为整数值?

如何在mysql服务器上将null定义为整数值?,mysql,null,integer,Mysql,Null,Integer,我需要允许在mysql服务器上将null保存为整数值,如何才能做到这一点?将字段设置为非null,并将其默认值设置为零: CREATE TABLE `t` ( `foo` BIGINT NOT NULL DEFAULT 0 ); 如果发送空值,foo的值将为零。我找到了以下方法: 我隐藏了下面的行,然后重新启动了sql server,它工作了 #将SQL模式设置为strict sql mode=“严格的转换表,无自动创建用户,无引擎替换” 请注意,这一行位于my.ini文件中。假设您的

我需要允许在mysql服务器上将null保存为整数值,如何才能做到这一点?

将字段设置为非null,并将其默认值设置为零:

CREATE TABLE `t` (
    `foo` BIGINT NOT NULL DEFAULT 0
);
如果发送空值,
foo
的值将为零。

我找到了以下方法: 我隐藏了下面的行,然后重新启动了sql server,它工作了

#将SQL模式设置为strict sql mode=“严格的转换表,无自动创建用户,无引擎替换”


请注意,这一行位于my.ini文件中。

假设您的问题与“不正确的整数值”错误消息有关

mysql> CREATE TABLE `foo` (
    ->  `foo_id` INT(10) NOT NULL AUTO_INCREMENT,
    ->  `foo_size` INT(10) NOT NULL DEFAULT '0',
    ->  PRIMARY KEY (`foo_id`)
    -> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.05 sec)

mysql> INSERT INTO foo (foo_size) VALUES ('');
ERROR 1366 (HY000): Incorrect integer value: '' for column 'foo_size' at row 1
。。。这意味着您的服务器正在严格模式下运行(这实际上是好的)。您可以禁用它:

mysql> SET @@session.sql_mode='';
Query OK, 0 rows affected (0.00 sec)

mysql> INSERT INTO foo (foo_size) VALUES ('');
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+---------+------+------------------------------------------------------------+
| Level   | Code | Message                                                    |
+---------+------+------------------------------------------------------------+
| Warning | 1366 | Incorrect integer value: '' for column 'foo_size' at row 1 |
+---------+------+------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT * FROM foo;
+--------+----------+
| foo_id | foo_size |
+--------+----------+
|      1 |        0 |
+--------+----------+
1 row in set (0.00 sec)

。。。您的错误将被降级为警告。

您能重新改写问题吗?就目前而言,这没有什么意义……我认为您将字段定义为not null,需要将其声明为accept nullwell。如果我将值发送为null或“”,则在插入或更新mysql服务器上的表时,应自动将其转换为零。我以前这样做过,但我完全忘记了怎么做。这是我在尝试将任何内容作为整型插入时遇到的错误。
不正确的整数值:''对于列..
否有一种方法可以将所有null更改为零,而不必逐个为每个表执行此操作。它自动适用于所有表。@zeina,您明确说过“在插入或更新表时”:-?是的,当对任何表自动执行此操作时,null应转换为零。因此,无论如何,警告仍然存在?甚至可以将“”作为0插入表中,对吗?@zhihong-抱歉,我不确定您的问题是什么:-?@Alvaro-我的意思是:禁用严格模式后,当将值“”插入整数数据类型时,虽然插入了“0”,但仍会生成警告。因为mysql仍然将“”识别为空字符串,而不是0整数值。我想找到一种方法,可以将“”视为整数,在表中插入0,并且不生成警告。但是到现在为止,我没有运气。@zhihong-我只能说它对我有用。我的答案中的代码是从一个真实的MySQL会话中复制的。请注意,这会放松对整个服务器的完整性检查,并可能影响其他应用程序。