2016-08-23 36 views
2

以下是我的表模式。由于自动增量重复无法创建MYSQL表

CREATE TABLE `tbl_certificate` 
(
`certificate_id` int(11) NOT NULL AUTO_INCREMENT,  
`certificate_number` varchar(150) NOT NULL,  
`vin_no_id` varchar(50) NOT NULL,  
`product_id` int(11) NOT NULL,  
`duration_id` int(11) NOT NULL,  
`clientId` varchar(30) NOT NULL,  
`first_name` varchar(50) NOT NULL,  
`last_name` varchar(50) NOT NULL,  
`state` varchar(256) NOT NULL,  
`city` varchar(256) NOT NULL,  
`mobile` varchar(30) NOT NULL,  
`alternate_contact_number` varchar(30) NOT NULL,  
`land_line` varchar(256) NOT NULL,  
`address` varchar(300) NOT NULL,  
`email_id` varchar(50) NOT NULL,  
`registration_no` varchar(20) NOT NULL,  
`make_id` varchar(255) NOT NULL,  
`model_id` varchar(100) NOT NULL,  
`vehical_sale_date` date NOT NULL,  
`vehical_delivery_date` date NOT NULL,  
`engine_number` varchar(30) NOT NULL,  
`fuel` varchar(20) NOT NULL,  
`odometer_reading` varchar(30) NOT NULL,  
`color` varchar(32) NOT NULL,  
`variant` varchar(16) NOT NULL,  
`refered_by` int(11) NOT NULL,  
`user_id` varchar(30) NOT NULL,  
`created_date` date NOT NULL,  
`complete_status` varchar(30) NOT NULL,  
`price_amt` varchar(20) NOT NULL,  
`servicetax_amt` varchar(20) NOT NULL,  
`total_amt` varchar(20) NOT NULL,  
`quotationNumber` bigint(20) NOT NULL,  
`programstart` date NOT NULL,  
`programend` date NOT NULL,  
`uploaded_certificate` int(11) NOT NULL COMMENT '0-No,1-Yes',  
`certificate_create_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,  
`savedCertificateDate` datetime NOT NULL,  
`purchaseCertificateDate` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',  
`transaction_no` varchar(256) NOT NULL,  
`expired` int(11) NOT NULL DEFAULT '0' 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

它将引发像

不正确的表定义的误差;可以只有一个自动列,它必须被定义为一个键

我没有得到什么问题,只有一个自动增量字段名称'certificate_id'。

请帮忙。

回答

1

对于AUTO_INCREMENT,您必须在您的DDL中包含PRIMARY KEY约束。

CREATE TABLE `tbl_certificate` 
(
    `certificate_id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    ... 
) 

要清楚,AUTO_INCREMENT基本上只是索引键的属性。它没有将属性定义为架构中的索引。因此,列可以是没有AUTO_INCREMENT属性的索引键,但如果索引不属于索引,则它不能具有AUTO_INCREMENT属性。有关更多详细信息,请参阅MySQL documentation

+0

感谢它的工作。但AUTO_INCREMENT本身在MySQL中的主键是不是? – Pratik

+0

自动增量列必须被索引,但这并不一定意味着它必须是PK的一部分(尽管它通常是PK或PK的一部分)。 – Shadow

+0

@Pratik不,它不是。正如我在上面的评论和我的回答中所指出的那样,自动增量字段必须编入索引。 – Shadow

0

在这种情况下,错误消息非常明确:自动增量列必须编入索引。您表格定义中的certificate_id字段不是索引的一部分。

+0

我没有那个,你可以给我参考。 – Pratik

+0

什么参考? – Shadow

+0

@Shadow我认为Pratik正在询问关于您所谈论的自动增量业务的更多信息的链接或参考。仅供参考在回顾低质量邮箱时偶然发现了这个答案。可能是因为答案的篇幅太短。 –