0
我想使用建議here的方法將olddb.sqlite3中的表複製到newdb.sqlite3中。爲什麼UNIQUE約束在這個INSERT上失敗?
bash-3.2$ cat cp.sql
ATTACH "olddb.sqlite3" AS old;
INSERT INTO feedback_phone SELECT * FROM old.feedback_phone;
bash-3.2$ rm newdb.sqlite3
bash-3.2$ touch newdb.sqlite3
bash-3.2$ sqlite3 newdb.sqlite3 < cp.sql
Error: near line 3: UNIQUE constraint failed: feedback_phone.id_
這是爲什麼發生?我知道ID_列由獨特的整數:
bash-3.2$ sqlite3 olddb.sqlite3
SQLite version 3.8.5 2014-08-15 22:37:57
Enter ".help" for usage hints.
sqlite> .schema feedback_phone
CREATE TABLE feedback_phone (
id_ INTEGER NOT NULL,
phone VARCHAR,
language VARCHAR,
kind VARCHAR,
user VARCHAR,
timestamp DATETIME,
success BOOLEAN,
url VARCHAR,
PRIMARY KEY (id_),
CHECK (success IN (0, 1))
);
sqlite> select id_ from feedback_phone;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
我複製該表從一個數據庫到不同的數據庫,完全是空的。究竟是什麼違反了約束?