一尘不染

这个mysql查询怎么了?

sql

这有效:

CREATE TABLE shoutbox_shout (
  shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  user_id INT UNSIGNED NOT NULL DEFAULT 0,
  shout_date INT UNSIGNED NOT NULL DEFAULT 0,
  message MEDIUMTEXT NOT NULL,
  KEY shout_date (shout_date)
)

…与此同时:

CREATE TABLE shoutbox_shout (
  shout_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
  user_id INT UNSIGNED NOT NULL DEFAULT 0,
  shout_date INT UNSIGNED NOT NULL DEFAULT 0,
  message MEDIUMTEXT NOT NULL,
  KEY shout_date (shout_date)
)

…结果是:


1075-错误的表格定义;只能有一个自动列,并且必须将其定义为键

我添加了主键,但仍然出现错误。


阅读 182

收藏
2021-03-10

共1个答案

一尘不染

引用错误#45987,错误1075(42000):不正确的表定义

实际上,这不是服务器错误,只是MyISAM(在该手册页中默认为默认值)和其他地方记录的InnoDB存储引擎之间的区别:http : //dev.mysql.com/doc/refman/5.1/en/innodb-
auto-increment-handling.html

MyISAM不再是默认引擎;InnoDB是。

另外:http :
//bugs.mysql.com/bug.php?id=60104

结论

InnoDB不支持AUTO_INCREMENT,但是没有为表定义主键,但是MyISAM支持。选择您要使用的引擎(MyISAM或InnoDB),并相应地处理CREATE
TABLE语句。

2021-03-10