phpmyadmin显示错误的两倍增量,不可能两列

时间:2018-12-17 06:12:11

标签: mysql phpmyadmin

所以我试图用phpmyadmin创建以下两个表。

create table category (
catId int identity(1,1),
catName varchar(20),

Constraint pk_category
PRIMARY KEY(catId))

create table subcategory (
subCatId INT IDENTITY(1,1),
catId INT,
subCatName VARCHAR(20),

CONSTRAINT pk_subcategory
PRIMARY KEY(catId,subCatId),

CONSTRAINT fk_subcat_cat
FOREIGN KEY(catID)
REFERENCES category(catId))

在创建子类别时,它显示此查询错误:

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

子类别表中没有两个自动递增的列,只有'subCatId'是。应该做什么?

4 个答案:

答案 0 :(得分:2)

  

仅适用于MyISAM存储引擎。仅一个数字   允许使用auto_increment值。每个auto_increment必须具有   关联列以定义其他auto_increment的唯一性   同一张表中的值。

此参考链接可能会帮助您更多地了解disconnect between value in mapStateToProps and the component's props

  

注意:   不这样做,根本没有第二个自动递增的列。您是否真的需要第二个自动递增的值?做什么的?一种   您要解决的实际问题的描述会有所帮助   其他人可以帮助您更好。我想你只是在这里告诉你你是如何尝试的   解决问题,而不是解决实际问题。

答案 1 :(得分:1)

您似乎正在使用SQL Server语法,但是针对MySQL运行。使用正确的语法,它应该可以工作:

CREATE TABLE category (
    catId INT NOT NULL AUTO_INCREMENT,
    catName VARCHAR(20),
    PRIMARY KEY (catId)
)

CREATE TABLE subcategory (
    subCatId INT NOT NULL AUTO_INCREMENT,
    catId INT,
    subCatName VARCHAR(20),
    FOREIGN KEY (catId) REFERENCES category (catId),
    PRIMARY KEY (subCatId)
);
SQL Server中的

IDENTITY大致对应于MySQL中的AUTO_INCREMENT

答案 2 :(得分:1)

这就是MySQL所说的

  

每个表只能有一个AUTO_INCREMENT列,它必须是   索引,并且不能具有DEFAULT值。 AUTO_INCREMENT列   仅当它只包含正值时,它才能正常工作。插入一个   负数被视为插入了很大的正数。   这样做是为了避免数字“换行”时出现精度问题。   从正面到负面,并确保您不会意外   得到一个包含0的AUTO_INCREMENT列。

因此,根据您的要求,您可以选择以下选项。

  • listen = /run/php/php7.2-fpm.sock设为subCatId
  • 或将该列设为Primary Key

答案 3 :(得分:1)

你有

Constraint pk_category
PRIMARY KEY(catId)

相反,只是说

PRIMARY KEY(catId)