2014-03-12 4 views
0

에 삽입합니다. 한 가지 문제를 제외하고는 모든 것이 잘 작동하는 것처럼 보입니다. 기본 ID를 지정하지 않고 외부 mysql 테이블에 삽입 쿼리를 실행하면 자동 증가로 설정되기 때문에 외부 데이터 래퍼가 추가하려고 시도하지만 1에서부터 증분을 시작합니다. 그러한 키는 이미 원격 MySQL 테이블에 존재합니다. 이것은 더 나은 예에 의해 설명 :포스트 그레스 외부 데이터 래퍼 : 내가 외부 MySQL 데이터베이스에서 테이블을 매핑 (SQLAlchemy의 사용) PostgreSQL의 외부 데이터 래퍼 <a href="http://multicorn.org/foreign-data-wrappers/" rel="nofollow">Multicorn</a>를 사용하고 MySQL의 테이블에 기본 키 증가 문제

MySQL의 테이블 :

CREATE TABLE `test` (
    `id` INT NOT NULL AUTO_INCREMENT, 
    `value` VARCHAR(100) NULL DEFAULT NULL, 
    PRIMARY KEY (`id`)); 

MySQL의 테이블 데이터 :

select * from test; 
+----+-------+ 
| id | value | 
+----+-------+ 
| 1 | val1 | 
| 2 | val2 | 
| 3 | val3 | 
+----+-------+ 

PostgreSQL의 FDW 서버 :

CREATE SERVER test foreign data wrapper multicorn options (wrapper 'multicorn.sqlalchemyfdw.SqlAlchemyFdw'); 

PostgreSQL을 FDW 테이블 :

수동 나 '기본 ID를 삽입하려는 시도가 어떤 이유로

ERROR: Error in python: IntegrityError 
DETAIL: (IntegrityError) (1062, "Duplicate entry '1' for key 'PRIMARY'") 'INSERT INTO test (id, value) VALUES (%s, %s)' (1L, u'val4') 

:이 오류가 발생합니다

insert into test1 (value) values ('val4'); 

:

이 10 내가 해봤 삽입 문입니다 두 데이터베이스/테이블에서 자동 증가로 지정되었습니다. 왜 이런 일이 일어나고 어떻게 해결할 수 있습니까? 이것이 원인이되는 것은 Postgres, FDW 플러그인 Multicorn 또는 SQLAlchemy입니까?

답변

2

대신 int을 PostgreSQL에서 사용하면 어떻게됩니까?

create foreign table test1 (
    id int, 
    value character varying 
) server test options (
    tablename 'test', 
    db_url 'mysql://root:[email protected]/test', 
    primary_key 'id' 
); 
+0

놀랍도록 간단합니다. – Caballero