Mysql 将NOT NULL值插入NOT NULL字段会导致错误
我使用以下命令创建了一个表:Mysql 将NOT NULL值插入NOT NULL字段会导致错误,mysql,Mysql,我使用以下命令创建了一个表: CREATE TABLE SpatialInfo (ItemID Integer NOT NULL, Latitude decimal(9,6) null, Longitude decimal(9,6) null) ENGINE=MyISAM; INSERT INTO SpatialInfo (ItemID, Latitude, Longitude) VALUES ( (SELECT ID AS ItemID from Item WHERE ID IS NOT
CREATE TABLE SpatialInfo (ItemID Integer NOT NULL, Latitude decimal(9,6) null, Longitude decimal(9,6) null) ENGINE=MyISAM;
INSERT INTO SpatialInfo (ItemID, Latitude, Longitude)
VALUES
(
(SELECT ID AS ItemID from Item WHERE ID IS NOT NULL and Latitude IS NOT NULL and Longitude IS NOT NULL),
(SELECT Latitude from Item),
(SELECT Longitude from Item)
);
其中表项具有以下说明:
+-------------+---------------+------+-----+---------------------+----------------------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------+------+-----+---------------------+-----------------------------+
| ID | int(11) | NO | PRI | NULL | |
| Name | varchar(300) | NO | | NULL | |
| Currently | decimal(8,2) | NO | | NULL | |
| Buy_price | decimal(8,2) | YES | | NULL | |
| First_bid | decimal(8,2) | NO | | NULL | |
| Number_bids | int(11) | YES | | NULL | |
| Latitude | decimal(9,6) | YES | | NULL | |
| Longitude | decimal(9,6) | YES | | NULL | |
| Location | varchar(60) | YES | | NULL | |
| Country | varchar(60) | YES | | NULL | |
| Start | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
| End | timestamp | NO | | 0000-00-00 00:00:00 | |
| SellerID | varchar(60) | NO | MUL | NULL | |
| Description | varchar(4000) | YES | | NULL | |
+-------------+---------------+------+-----+---------------------+-----------------------------+
我注意到的一点是,如果表项中的ID为NULL,则默认值为。但是,ID是主键,因此不可能为NULL
当我运行INSERT-INTO-SpatialInfo命令时,mysql给了我以下错误:
ERROR 1048 (23000): Column 'ItemID' cannot be null
我想知道如何解决这个问题。您的错误可能是由于
项
表中有多行,因此子查询返回了多行。试着这样做:
INSERT INTO SpatialInfo (ItemID, Latitude, Longitude)
SELECT ID AS ItemID, Latitude, Longitude
from Item
WHERE ID IS NOT NULL and Latitude IS NOT NULL and Longitude IS NOT NULL;
我不知道你为什么会犯这样的错误。我希望类似于“多行返回其中一行”。Null表示缺少值,或者我们可以说它是未知的。因此,您可以有多个字段为空的记录,即使您已指定为主键字段。
因此,请确保在主键字段上使用NOTNULL。我不确定这段代码是否符合我的要求:我的目的是将ItemID从一个项目插入到另一个项目ID,插入到空间信息中,将纬度插入到SpatialInfo的纬度中,这同样适用于经度。在代码中,您将SELECTID写为ItemID、纬度和经度。我对这一行感到困惑:您是否选择这三个属性并传递到一个属性ID?如果是这样,我如何将这三个单独的属性传递到SpatialInfo?所以我测试了它,它做了我想要的事情。我只是对值语法感到困惑。我该怎么用呢?@最酷的企鹅。不要费心于
值()
<代码>插入。选择执行所有操作插入。values()
有,等等。很抱歉@TheCoolestPenguin。我不太擅长解释事情。请参考以下问题以获得更清晰的答案。[链接]