[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

Incorrect table definition; there can be only one auto column and it must be defined as a key

Posted on 2009-05-04
2
Medium Priority
?
3,281 Views
Last Modified: 2012-05-06
I am attempting to migrate from MS SQL to MYSQL, using the MYSQL Migration Toolkit.  I have generated scripts with the tool that I am running from myPHPadmin.  While some of the CREATE TABLE commands are working, a few of them generate this error:

Incorrect table definition; there can be only one auto column and it must be defined as a key.

My understanding is you cannot have more than one field with auto_increment, and it must be primary key.  Can you not have multiple primary keys but set only one of the to auto_increment?


DROP TABLE IF EXISTS `captain1`.`tblEducation`;
CREATE TABLE `captain1`.`tblEducation` (
  `UserID` INT(10) NOT NULL,
  `EducationID` INT(10) NOT NULL AUTO_INCREMENT,
  `InstituteName` VARCHAR(50) NULL,
  `ProgramName` VARCHAR(50) NULL,
  `LevelObtained` VARCHAR(50) NULL,
  `StudyFrom` DATETIME NULL,
  `StudyTo` DATETIME NULL,
  `GradDate` DATETIME NULL,
  `Skills` VARCHAR(50) NULL,
  `Type` VARCHAR(50) NULL,
  PRIMARY KEY (`UserID`, `EducationID`),
  CONSTRAINT `FK_tblEducation_tblUsers` FOREIGN KEY `FK_tblEducation_tblUsers` (`UserID`)
    REFERENCES `captain1`.`tblUsers` (`UserID`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION
)
ENGINE = INNODB;

Open in new window

0
Comment
Question by:phisherpryce
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 28

Assisted Solution

by:gamebits
gamebits earned 800 total points
ID: 24298088
A PRIMARY KEY is a unique index where all key columns must be defined as NOT NULL. If they are not explicitly declared as NOT NULL, MySQL declares them so implicitly (and silently). A table can have only one PRIMARY KEY. If you do not have a PRIMARY KEY and an application asks for the PRIMARY KEY in your tables, MySQL returns the first UNIQUE index that has no NULL columns as the PRIMARY KEY.

More info here

http://dev.mysql.com/doc/refman/5.1/en/create-table.html
0
 
LVL 17

Accepted Solution

by:
k_murli_krishna earned 1200 total points
ID: 24298093
Please refer:
http://www.experts-exchange.com/Database/MySQL/Q_24265504.html

You have to make UserID also as an AUTO_INCREMENT column and have the rest definition as it is and the table should get created.
0

Featured Post

Microsoft Certification Exam 74-409

Veeam® is happy to provide the Microsoft community with a study guide prepared by MVP and MCT, Orin Thomas. This guide will take you through each of the exam objectives, helping you to prepare for and pass the examination.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This post looks at MongoDB and MySQL, and covers high-level MongoDB strengths, weaknesses, features, and uses from the perspective of an SQL user.
By, Vadim Tkachenko. In this article we’ll look at ClickHouse on its one year anniversary.
In this video, Percona Solution Engineer Rick Golba discuss how (and why) you implement high availability in a database environment. To discuss how Percona Consulting can help with your design and architecture needs for your database and infrastr…
In this video, Percona Solutions Engineer Barrett Chambers discusses some of the basic syntax differences between MySQL and MongoDB. To learn more check out our webinar on MongoDB administration for MySQL DBA: https://www.percona.com/resources/we…
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question