CREATE TABLE IF NOT EXISTS `myproducts` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(10) unsigned DEFAULT NULL,
`type_id` varchar(64) COLLATE utf8_czech_ci NOT NULL DEFAULT 'NormalPage',
`name` varchar(255) COLLATE utf8_czech_ci NOT NULL DEFAULT '',
PRIMARY KEY (`uid`),
KEY `index_2` (`type_id`,`t`),
KEY `name` (`name`),
KEY `parent_id` (`parent_id`,`name`(48))
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci ROW_FORMAT=DYNAMIC AUTO_INCREMENT=189 ;
这是我的插入声明。
INSERT INTO `mydb`.`myproducts` (`uid`, `parent_id`, `type_id`, `name`) VALUES ('',20, 'Product Category', 'WaterBottels');
问题描述: 当我在我的系统中使用这个插入查询时,它具有mysql版本5.5.16,它完美地插入了记录但是当我在另一个系统中尝试这个时,它也有mysql版本5.5.16,它给出了问题。
我知道我们应该为自动增量列传递NULL或'0',但我的问题是为什么它适用于我的实例。
因为它适用于我的实例,我正在考虑我们可以传递''作为自动增量列的值。如果是这样在其他系统中解决,我需要更改任何mysql配置。
答案 0 :(得分:0)
尝试执行此查询以插入:
INSERT INTO `mydb`.`myproducts` (`parent_id`, `type_id`, `name`)
VALUES (20, 'Product Category', 'WaterBottels');
您无需指定主键列,因为它将自动插入。
答案 1 :(得分:0)
由于您使用uid
作为AUTO_INCREMENT
。
MySQL使用AUTO_INCREMENT
关键字来执行自动增量功能。
默认情况下,AUTO_INCREMENT的起始值为1,每个新记录的起始值都会增加1。
您可以使用
INSERT INTO `mydb`.`myproducts` (`parent_id`, `type_id`, `name`) VALUES (20, 'Product Category', 'WaterBottels');
而不是
INSERT INTO `mydb`.`myproducts` (`uid`, `parent_id`, `type_id`, `name`) VALUES ('',20, 'Product Category', 'WaterBottels');
答案 2 :(得分:0)
AUTO_INCREMENT字段不需要值,因为它将自动生成。所以你可以插入一行而不指定列uid的值。
答案 3 :(得分:0)
以下任一用户
INSERT INTO `mydb`.`myproducts` (`uid`, `parent_id`, `type_id`, `name`) VALUES
(null,20, 'Product Category', 'WaterBottels');
OR
INSERT INTO `mydb`.`myproducts` ( `parent_id`, `type_id`, `name`) VALUES
(20, 'Product Category', 'WaterBottels');
答案 4 :(得分:0)
由于您的 uid 列自动递增,因此您无需在插入时传递值。试试这个:
INSERT INTO `mydb`.`myproducts` (`parent_id`, `type_id`, `name`) VALUES (20, 'Product Category', 'WaterBottels');
这适用于所有系统, uid 会自动增加。