Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sqlite 为什么唯一约束在此插入上失败?_Sqlite - Fatal编程技术网

Sqlite 为什么唯一约束在此插入上失败?

Sqlite 为什么唯一约束在此插入上失败?,sqlite,Sqlite,我正在尝试使用建议的方法将表从olddb.sqlite3复制到newdb.sqlite3 我正在将该表从一个数据库复制到另一个完全为空的数据库中。到底是什么违反了约束?新的数据库文件是空的,因此它甚至没有表。 因此,feedback\u phone引用了唯一具有该名称的表,即old.feedback\u phone 将CREATETABLE语句添加到.sql文件中 bash-3.2$ cat cp.sql ATTACH "olddb.sqlite3" AS old; INSERT INTO f

我正在尝试使用建议的方法将表从olddb.sqlite3复制到newdb.sqlite3


我正在将该表从一个数据库复制到另一个完全为空的数据库中。到底是什么违反了约束?

新的数据库文件是空的,因此它甚至没有表。 因此,
feedback\u phone
引用了唯一具有该名称的表,即
old.feedback\u phone

将CREATETABLE语句添加到.sql文件中

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_
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