由于自动增量重复,无法创建MYSQL表

时间:2016-08-23 15:52:37

标签: mysql database

下面是我的表架构。

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'。

请帮忙。

2 个答案:

答案 0 :(得分:1)

您必须在DDL中添加PRIMARY KEY约束AUTO_INCREMENT

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

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

答案 1 :(得分:0)

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