0
我正在使用PostgreSQL外部數據包裝Multicorn(它使用SQLAlchemy)來映射來自外部MySQL數據庫的表。到目前爲止,一切似乎都工作正常,除了一個問題:如果我在沒有指定主ID的情況下對我的外部mysql表運行插入查詢,因爲它設置爲自動增量,外部數據包裝嘗試追加並從1開始增加,即使這樣的密鑰已經存在於遠程MySQL表中。這是更好地通過例子來說明:Postgres外部數據包裝:插入到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表:
create foreign table test1 (
id serial,
value character varying
) server test options (
tablename 'test',
db_url 'mysql://root:[email protected]/test',
primary_key 'id'
);
這是我試過的插入語句:
insert into test1 (value) values ('val4');
它拋出這個錯誤:
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')
出於某種原因,有一個嘗試手動插入主ID,我」在兩個數據庫/表上都指定爲自動增量。爲什麼會發生這種情況,我該如何解決?是什麼導致了這個,是Postgres,FDW插件Multicorn還是SQLAlchemy?
令人驚訝的簡單。 – Caballero