2013-11-29 106 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

我試過第一個選項,沒有工作。第二個選項也無法正常工作...對於一些奇怪的原因,它採取隨機數字:( –