Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.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 整数值不正确:'';对于列';id';在第一排_Mysql_Insert - Fatal编程技术网

Mysql 整数值不正确:'';对于列';id';在第一排

Mysql 整数值不正确:'';对于列';id';在第一排,mysql,insert,Mysql,Insert,我正在尝试插入我的mySQL数据库。第一列是“id”列,因为它是一个自动递增字段,所以我将其留空。由于某种原因,我无法插入,我得到了下面提到的错误。我非常感谢你在这方面的帮助 尝试插入时出现以下错误: Incorrect integer value: '' for column 'id' at row 1 我的问题 $insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseO

我正在尝试插入我的mySQL数据库。第一列是“id”列,因为它是一个自动递增字段,所以我将其留空。由于某种原因,我无法插入,我得到了下面提到的错误。我非常感谢你在这方面的帮助

尝试插入时出现以下错误:

Incorrect integer value: '' for column 'id' at row 1
我的问题

$insertQuery = "INSERT INTO workorders VALUES('', '$priority', '$requestType', '$purchaseOrder', '$nte', '$jobSiteNumber')";

这可能意味着您的
id
是一个
AUTO_INCREMENT
整数,您正在尝试发送一个字符串。您应该指定一个列列表,并将其从
INSERT
中删除

INSERT INTO workorders (column1, column2) VALUES ($column1, $column2)

要让MySql为
AUTO_INCREMENT
字段生成序列号,您有三个选项:

  • 按照njk的建议,指定一个列列表并从中省略自动递增的列这将是最好的方法。请参阅评论
  • 显式分配空值
  • 显式分配0
  • :

    没有为自动增量列指定值,因此 自动分配序列号。您还可以显式地 将NULL0分配给列以生成序列号

    这三条语句将产生相同的结果:

    $insertQuery=“插入工作顺序(`priority`,`request_type`)值(`priority',`requestType',…)”;
    $insertQuery=“插入到工单值中(NULL,$priority',…)”;
    $insertQuery=“插入到工单值中(0,$priority,…”;
    
    这是因为您的数据发送列类型为整数,并且正在向其发送字符串值

    所以,下面的方法对我有效。 试试这个

    $insertQuery = "INSERT INTO workorders VALUES (
                        null,
                        '$priority',
                        '$requestType',
                        '$purchaseOrder',
                        '$nte',
                        '$jobSiteNumber'
                    )";
    

    不要使用
    'null'
    。将其用作
    null
    ,不带单引号。

    尝试编辑您的my.cf并注释原始sql\u模式,并添加sql\u模式=“”

    vi /etc/mysql/my.cnf
    
    sql_mode=“”

    保存并退出

    service mysql restart
    

    对于
    wamp/phpmyadmin
    中的相同错误,我已编辑了
    my.ini
    ,并对原文进行了注释:

    ;sql-mode= "STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_IN_DATE,NO_AUTO_CREATE_USER"
    

    并添加了
    sql\u mode=“”

    您的表结构是什么?看起来您的第一个字段是一个整数,它不能除了“”…尝试传递列,然后传递值-它可能是一个标识列…当将行值粘贴到SQL workbench中时,这似乎不起作用-如果为NULL,则仍然不能得到整数,如果为重复值,则仍然不能得到整数零…任何人都有解决方案吗?@MHZ您应该始终使用列列表。如果表结构发生更改,会发生什么情况?如果列默认值为
    NULL
    ,则不需要显式分配
    NULL
    。选项1实际上是“更好”选项方法,并将在将列添加到表中时避免应用程序出现MySQL抛出错误,或者(甚至更糟)如果列被重新排序,则将值填充到错误的列中。对于快速和肮脏的工作,0或NULL技巧就足够了。但是对于将在部署的应用程序中运行的代码,您希望option 1.njk和spencer7593绝对公平。在回答中特别提到了这一点。但我相信,对于或者通过OP了解它的工作原理并了解所有选项。在插入新的MySQL条目时,将主键int值指定为0是我在FLASK中使用sqlalchemy时唯一有效的选项。谢谢。(我在这篇评论中加入了一些关键搜索词,希望对谷歌有所帮助,哈)当我来到这里时,我已经知道这个选项,但我认为它是其他的,因为代码以前在我的在线服务器上工作,但在我的本地主机上没有。如果您使用excel或CSV上传批量数据,请确保禁用自动增量和手动添加序列号。这对我来说很有效,因为我不想删除限制completelyThank@PJunior这对我来说很有效。我习惯于让auto_increment在INSERT上设置id种子。Ubuntu 18路径是/etc/mysql/mysql.conf.d/mysqld。cnf@PJunior我已经用你的答案解决了同样的问题。在我的例子中,我的insert查询有一些空白值,它是为一个字段设置的,默认情况下该字段是initeger值设置为NULL意味着空白不被认为是NULL。所以我已经检查了我当前的SqLyMod模式值,它是“StuttTyTrimiTable”,所以我已经使用查询(set全局qLyMyLoad=`')删除它。在sql中,我的问题是解决方案我遵循这个解决方案,因为我的服务器最近刚从MySQL升级到MariaDB,并且有大量的应用程序在其中运行。在每个应用程序中查找每个sql查询并逐个修复它们会非常困难,尤其是旧的查询。
    NameError:name'null'不是de罚款(炼金术)。不,我没有使用单引号。