我有一个mysql数据库,其中包含以下表格:
create table post
(
id int primary key auto_increment,
group_id int,
post varchar(2000),
person_id int,
foreign key(person_id) references person(person_id) on update cascade on delete cascade,
foreign key(group_id) references groups(group_id) on update cascade on delete cascade
);
create table comment
(
id int primary key auto_increment,
p_id int,
person_id int,
comment varchar(2000),
foreign key(p_id) references post(id) on update cascade on delete cascade,
foreign key(person_id) references person(person_id) on update cascade on delete cascade
);
此处帖子ID和评论ID未正确递增。我创建并删除了这些表多次,并且每次将初始id作为一个随机值并且每个insert都采用任意随机值。
例如。它有时需要552,有时需要3。
我还在mysql命令行上检查了以下内容:
show variables like 'auto_inc%';
并且值auto_increment_increment和auto_increment_offset都设置为1.
对此有任何帮助,因为这是关键的商业工作。
答案 0 :(得分:0)
我不知道这是否会解决您的问题,因为您的插入语句引用了其他两个表(person
和groups
),这些表未在您的代码中显示(所以我不知道那些表格会怎么样。)
但是,既然你写了
对此有任何帮助,因为这是关键的商业工作。
...这里有一些帮助/建议:
我不确定这些表是如何成功创建的,因为我在尝试该代码时遇到了很多错误(但这不是重点),但是这里和#39;一种更有效的方法(注意:我只能假设对表person
的引用而groups
表示那些
表已存在):
编辑:创建表后首先尝试此操作:
FLUSH TABLES;
ALTER TABLE `comment` AUTO_INCREMENT = 1;
ALTER TABLE `post` AUTO_INCREMENT = 1;
如果这没有帮助,这就是上面提到的更有效的方法:
CREATE TABLE `comment` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`p_id` int(11) DEFAULT NULL,
`person_id` int(11) DEFAULT NULL,
`comment` varchar(2000) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `p_id` (`p_id`),
KEY `person_id` (`person_id`)
);
CREATE TABLE `post` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`group_id` int(11) DEFAULT NULL,
`post` varchar(2000) DEFAULT NULL,
`person_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `group_id` (`group_id`),
KEY `person_id` (`person_id`)
);
ALTER TABLE `comment`
ADD CONSTRAINT `comment_fk_1`
FOREIGN KEY (`p_id`)
REFERENCES `post` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `comment`
ADD CONSTRAINT `comment_fk_2`
FOREIGN KEY (`person_id`)
REFERENCES `person` (`person_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `post`
ADD CONSTRAINT `post_fk_1`
FOREIGN KEY (`person_id`)
REFERENCES `comment` (`person_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
ALTER TABLE `post`
ADD CONSTRAINT `post_fk_2`
FOREIGN KEY (`group_id`)
REFERENCES `groups` (`group_id`)
ON DELETE CASCADE
ON UPDATE CASCADE;