我有一台运行旧MySQL版本(5.5.41)的服务器,其中支持以下内容:
create table mytest33
(
topicnum mediumint,
postnum mediumint auto_increment,
primary key (topicnum,postnum)
);
因此,当我在此表中插入值时,它将如下所示:
Topicnum Postnum
1 1
1 2
2 1
等等。因此,如果topicnum不同,postnum值将返回到1。
不再支持 - 当我尝试在MySQL 5.6.7版中创建相同的表时,我收到错误:
错误1075(42000):表定义不正确;只能有一个自动列,必须将其定义为键。
我正在使用MyISAM引擎。
我如何解决这个问题?
答案 0 :(得分:0)
根据我能理解的,这是你需要执行的命令: -
create table mytest33(topicnum mediumint, postnum mediumint auto_increment,index(postnum), primary key (topicnum,postnum));
您可以从这里获得更多信息: - Mysql Innodb: Autoincrement non-Primary Key
希望它有所帮助。 祝你有个美好的一天!
答案 1 :(得分:0)
MyISAM
引擎将其作为一项功能,并且仍受支持。 InnoDB
从未有过此功能。你切换到InnoDB(这是一件好事),但被少数'缺陷之一所困扰。
上一个答案中的链接指出INDEX(id)
可让postnum
成为AUTO_INCREMENT
和UNIQUE
(除非您明确设置)。然而,它不会从1开始。这更复杂; see my blog
答案 2 :(得分:0)
所以这似乎解决了这个问题:
create table mytest33(
topicnum mediumint,
postnum mediumint auto_increment,
primary key (topicnum,postnum)
) ENGINE=MyISAM;