MySQL 5.6에서 MyISAM에서 InnoDB로 테이블을 변환하는 데 문제가 있습니다.InnoDB에서 MyISAM으로 테이블을 변환하는 문제 (단 하나의 자동 열만있을 수 있으며 키로 정의해야 함)
--
-- Table structure for table `companies`
--
DROP TABLE IF EXISTS `companies`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `companies` (
`uid` int(20) NOT NULL,
`cid` int(20) NOT NULL AUTO_INCREMENT,
`cname` varchar(500) NOT NULL,
`rfc` varchar(20) NOT NULL,
`address` varchar(1000) NOT NULL,
`dbUseExternal` tinyint(1) NOT NULL DEFAULT '0',
`dbHost` varchar(50) NOT NULL,
`dbPort` varchar(50) NOT NULL,
`dbUser` varchar(50) NOT NULL,
`dbPass` varchar(50) NOT NULL,
`dbSSL` varchar(50) NOT NULL,
`dbDriver` varchar(50) NOT NULL,
`dbName` varchar(50) NOT NULL,
`status` int(10) NOT NULL,
PRIMARY KEY (`uid`,`cid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
그것의 MyISAM으로 작동합니다
다음은 테이블 덤프입니다. 내가 이노로 변환하려고하면 (내가 SQL 파일로 명령 행에 삽입이 덤프를 편집하려고하면 나) 그러나, 나는 다음과 같은 오류 얻을 :
Incorrect table definition; there can be only one auto column and it must be defined as a key
을 그 오류를 이해 적어도 내가 한 줄 알았다. 저는 실제로 하나 이상의 AUTO_INCREMENT
열을 사용하지 않고 은 기본 키로 정의 된입니다.
또한 오류와 관련하여 찾은 정보는 명백한 누락 된 키 또는 중복 된 AUTO_INCREMENT 정의 때문입니다. 내가 일반적으로 언급 한 또 다른 사실은 은 MyISAM과 InnoDB에 대해 동일하다는 것입니다..
그래서 MyISAM과 InnoDB에서 작동하지 않는 이유는 무엇입니까?
미리 의견을 보내 주셔서 감사합니다. 이노에
프란
'(cid)'혼자? – eggyal
각 클라이언트에 대해 auto_increment를 1로 설정하려면 MyISAM에서 잘 작동하고 있습니다. 새로운'uid '를 추가하면 자동으로'cid' = 1을 얻고,'uid'를 위해 하나씩 증가합니다. 회사를 등록하는 사용자가 있습니다. 따라서 각 레코드는 고유 한'uid'-'cid'입니다. –
아마도 [이 답변] (http://stackoverflow.com/a/11321211) 도움이 될 것입니다? – eggyal