sqlite - 为什么UNIQUE约束在此INSERT上失败?

标签 sqlite

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

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


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

最佳答案

新的数据库文件为空,因此它甚至没有该表。
因此,feedback_phone引用具有该名称的唯一表,即old.feedback_phone

将CREATE TABLE语句添加到.sql文件。

关于sqlite - 为什么UNIQUE约束在此INSERT上失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32209025/

相关文章:

java - 索引越界。应如何将 resultSet 中的数据存储到 ArrayList 中?

Android:SQLite 数据库不在内存中

java - Android:ListView 上的 Sqlite

iphone - 重新启动应用程序后,Sqlite插入丢失

ios - Swift SQLite SQL 计数

ruby-on-rails - 如何处理 xor 条件、rails、外键和 sqlite 数据库?

android - 当在房间数据库中添加新表时,从版本 1 到版本 2

android - SQlite 数据库在 Android 中以编程方式转换为 Excel 文件格式

Sqlite:用两个不同的 "where"查询同一个表两次

c++ - Qt 无法打开文件 'sqlite3.lib'