2013-11-29 103 views
0

MySQL的问题,我有一个具有以下表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作为一些随机值,并且每个插入都采用任何随机值。

例如,它需要552有时有有时为3

我还检查了mysql命令行:

show variables like 'auto_inc%'; 

和两个值auto_increment_increment和auto_increment_offset设置为1

任何帮助,在此赞赏,因为这是举行关键的商业工作。

+0

请出示您的插入语句之后,你所描述行为 – peterm

+0

我给插入语句如下:INSERT INTO post(group_id,post,person_id)VALUES(1,'曼联以5-0战胜拜仁',1); –

回答

0

我不知道这是否能够解决您的问题,因为您的插入语句引用了其他两个表(persongroups),这些表未在您的代码中显示(所以我不知道这些表的含义)。

但是,既然你写

任何帮助表示赞赏,因为这是保持关键BIZ工作。

...这里的一些帮助/建议:

我不知道如何将这些表正在成功创建,因为我得到了很多的错误,当我尝试的代码(但是这是旁边的点),但是这里有一个更有效的方法(注意:我只能假设到表persongroups意味着那些 表已经存在)的引用:

编辑:先试试这个,创建表后:

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; 
+0

我试过第一个选项,没有工作。第二个选项也无法正常工作...对于一些奇怪的原因,它采取随机数字:( –