2014-09-01 3 views
0

'SQL :: Translator'모듈을 사용하여 MySQL 덤프를 sqlite로 변환하는 perl 스크립트가 있습니다.mysql을 sqlite로 변환하는 중 오류가 발생했습니다.

MySQL의 파일은 다음과 같습니다

CREATE TABLE `table1` (
    `id1` char(4) NOT NULL, 
    `text1` char(2) NOT NULL, 
    `text2` char(2) NOT NULL, 
    `text3` enum('N','Y') NOT NULL, 
    UNIQUE KEY `id1` (`id1`,`text1`,`text2`), 
    CONSTRAINT `table1_ibfk_1` FOREIGN KEY (`id1`) REFERENCES `table2` (`id1`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

'SQL :: 번역기'모듈을 사용하여 최종 SQL로 변환하는 동안, 나는 마지막 SQL에서 다음 줄을 얻고있다 :

CREATE INDEX "table1" ON "table2" ("table1"); 

이를 변환 할 때 sqlite3 명령을 사용하여 sqlite에 대한 최종 sql 파일을 열면 다음 오류가 발생합니다.

내가 최종 SQL에서 선 'CREATE INDEX "table1" ON "table2" ("table1");'을 제거하기 위해 노력했다

there is already an index named table1 Error: near line 540: no such table: main.table1

는 다음 괜찮 았는데. MySQL을 달리

+0

여기에 일관성이없는 것으로 보입니다. 스크립트를 그대로 붙여 넣을 수 있습니까? 'table1'은 실제로'table2'에있는 컬럼의 이름입니까? –

+0

왜이 변환을 수행 하시겠습니까? 테스트 데이터베이스를 만들려면 https://metacpan.org/pod/Test::mysqld를보십시오. SQLite는 데이터베이스로 사용하기에 적합하지 않으며 외래 키 제약 조건을 무시합니다 (예 : – plusplus

답변

0

도와주세요

은, SQLite는 테이블과 인덱스에 대해 동일한 네임 스페이스를 사용 - 당신은 테이블과 같은 이름을 가진 인덱스를 가질 수 없습니다. 색인 이름을 변경해야합니다.

+0

). 우리는 색인의 이름을 바꿀 수 있습니까? – Futuregeek

관련 문제