【问题标题】:mysql issue with auto incrementmysql自动增量问题
【发布时间】:2013-11-29 06:22:14
【问题描述】:

我有一个 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。

对此的任何帮助表示赞赏,因为这是关键的商业工作。

【问题讨论】:

  • 请出示您的插入语句,之后您描述了行为
  • 我给出如下插入声明: INSERT INTO post (group_id,post,person_id) VALUES (1,'Manchester United 以 5-0 战胜 Bayern',1);

标签: mysql auto-increment


【解决方案1】:

我不知道这是否会解决您的问题,因为您的插入语句引用了您的代码中未显示的另外两个表(person 和 groups)(所以我不知道这些表是怎么回事) .

但是,既然你写了

感谢您对此的任何帮助,因为这是关键的商业工作。

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

我不确定这些表是如何成功创建的,因为我在尝试该代码时遇到了很多错误(但这不是重点),但是这里有一个更有效的方法(注意:我只能假设对表 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;

【讨论】:

  • 我尝试了第一个选项,但没有成功。第二个选项也不起作用......出于某种奇怪的原因,它正在使用随机数:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-02
  • 1970-01-01
  • 2011-07-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多