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
MySQL:列不能为null_Mysql_Sql_Windows 8_Odbc_Sql Insert - Fatal编程技术网

MySQL:列不能为null

MySQL:列不能为null,mysql,sql,windows-8,odbc,sql-insert,Mysql,Sql,Windows 8,Odbc,Sql Insert,首先,我在谷歌上搜索了这个问题,但没有发现任何类似的情况。 因此,我感谢任何帮助 我有一张桌子: CREATE TABLE tinypurses.purses ( id SMALLINT(6) NOT NULL AUTO_INCREMENT, Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP, keyyy CHAR(100) DEFAULT NULL, LastSeed SMALLINT(6) NOT NULL DEFAULT 0, PRIMA

首先,我在谷歌上搜索了这个问题,但没有发现任何类似的情况。 因此,我感谢任何帮助

我有一张桌子:

CREATE TABLE tinypurses.purses (
  id SMALLINT(6) NOT NULL AUTO_INCREMENT,
  Time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  keyyy CHAR(100) DEFAULT NULL,
  LastSeed SMALLINT(6) NOT NULL DEFAULT 0,
  PRIMARY KEY (id),
  INDEX purses_id_index (id)
)
ENGINE = INNODB
AUTO_INCREMENT = 2
CHARACTER SET utf8
COLLATE utf8_general_ci;
当我尝试向其中插入新记录时,出现了一个错误:

数据库错误:[MySQL][ODBC 5.1驱动程序][mysqld-5.1.47-community]列“LastSeed”不能为空

我很困惑,因为我显式设置了列“LastSeed”的值:

statement.prepare(connection(), "insert into purses (time, keyyy, LastSeed) values(?, ?, ?)");
statement.param(1).set_as_systemtime(sysTime);
statement.param(2).set_as_string(key);
statement.param(3).set_as_long(1);
if (!stmt.execute())
{
    LOG << statement.last_error(); // got this error here
}
语句。准备(connection(),“插入钱包(time,keyy,LastSeed)值(?,)”;
语句.param(1).设置为系统时间(系统时间);
语句.param(2).将_设置为_字符串(键);
语句.param(3).将_设置为_long(1);
如果(!stmt.execute())
{

LOG不要将字段名用作“key”。它是mysql的一个关键字。

即使您没有显式地为列
LastSeed
设置值,在字段定义中设置一个
默认
约束(就像您所做的那样)也应该足够了


既然你说它可以在其他版本的Windows上运行,而且错误显然与此无关,我将调查安装的ODBC驱动程序。

默认情况下,Win XP到Win 7上的MySQL在空值以及是否允许插入空值方面表现不正确。即:默认情况下,Windows MySQL上的MySQL将允许将空值插入非空字段

MySQL在*nix和Win 8上运行正常。您无法将“0”插入非空字段的原因是因为在MySQL“0”中==NULL


好的,我失败了,但在发布初始问题时,我重命名了不相关的列。即使列的名称有效,我也会出现此错误。是的,它在XP和7上运行良好。看起来MySQL Server或ODBC connector的旧版本对于Windows 8非常旧-出现了一些问题。正如您链接到的文档所示,0和“0”(以及任何其他值)两者都不是空的