【问题标题】:Why is the UNIQUE constraint failing on this INSERT?为什么 UNIQUE 约束在此 INSERT 上失败?
【发布时间】:2015-08-26 00:53:11
【问题描述】:

我正在尝试使用建议的方法 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

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

【问题讨论】:

    标签: sqlite


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-17
      • 2021-12-09
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 2017-03-04
      • 2020-04-24
      • 1970-01-01
      相关资源
      最近更新 更多