SQLite INSERT 命令返回错误"column number is not unique"
SQLite INSERT command return error "column number is not unique"
我有一个包含行(行)的文本文件。每一行都是数据库表中的一条记录。我读取这个文件并填充数据库。
表创建命令:
CREATE TABLE gosts(number TEXT PRIMARY KEY, userNumber TEXT, status TEXT, date TEXT, title TEXT, engTitle TEXT, description TEXT, mainCategory INTEGER, category INTEGER, subCategory INTEGER);
插入查询:INSERT INTO gosts VALUES ("30331.8-95", "ÃÎÑÒ 30331.8-95", "Äåéñòâóþùèé", "01.07.1996", "Ýëåêòðîóñòàíîâêè çäàíèé. ×àñòü 4. Òðåáîâàíèÿ ïî îáåñïå÷åíèþ áåçîïàñíîñòè. Îáùèå òðåáîâàíèÿ ïî ïðèìåíåíèþ ìåð çàùèòû äëÿ îáåñïå÷åíèÿ áåçîïàñíîñòè. Òðåáîâàíèÿ ïî ïðèìåíåíèþ ìåð çàùèòû îò ïîðàæåíèÿ ýëåêòðè÷åñêèì òîêîì", "Electrical installations of buildings. Part 4. Protection for safety. Applisation of protective measues for safety. Measures of protection against electric shock", "Íàñòîÿùèé ñòàíäàðò óñòàíàâëèâàåò îáùèå òðåáîâàíèÿ ïî ïðèìåíåíèþ ìåð çàùèòû äëÿ îáåñïå÷åíèÿ áåçîïàñíîñòè è òðåáîâàíèÿ ïî ïðèìåíåíèþ ìåð çàùèòû îò ïîðàæåíèÿ ýëåêòðè÷åñêèì òîêîì ïðè ýêñïëóàòàöèè ýëåêòðîóñòàíîâîê çäàíèé", 37, 333, 628);
请忽略编码问题。源文件具有cp1251编码,但插入示例是从控制台获取的。我尝试使用utf-8,但有同样的问题。
SQLite使用上面的代码:
if(sqlite3_prepare_v2(database, query, -1, &statement, 0) == SQLITE_OK) {
...
}
函数调用不返回SQLITE_OK。并通过以下方式显示错误信息:
string error = sqlite3_errmsg(database);
if(error != "not an error") cout << query << " " << error << endl;
奇怪的是,有些记录插入没有错误,我找不到好的和坏的记录的区别。
如果需要,我可以提供更多的信息。
我敢打赌,好行和坏行之间的区别在于与'number'列相关联的值是否已经在表中。
这是表设计通常不将TEXT
值列用于PRIMARY KEY
值列的原因之一。
如果有可能重新创建您的表,我会创建一个ID字段,负责为您的表的PRIMARY KEY
。进一步启用IDENTITY
属性以自动增加主键值。
这应该可以防止插入失败,因为在'number'列中有重复的值。
现在,如果'number'列中的值必须是唯一的,那么你应该在该列上添加UNIQUE
约束。注意:UNIQUE
将产生与您当前收到的相同的错误,因为看起来您正在尝试为列'number'添加具有相同值的多行
查看SQLite CREATE TABLE文档了解更多细节
相关文章:
- Why is UINT32_MAX + 1 = 0?
- C++错误:"error: int aaa::bbb is protected within this context"
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 具有变量Number of Arguments的std::函数的矢量
- 使用 cmake 的 Linux 终端上的"Conversion to non-scalar type is requested"错误
- Is !NaN not a NaN?
- Directx 11 - CompileFromFile() is not compiling
- Centos7 g++ "to_string is not in a member of std"
- "Unable to start debugging. No process is associated with this object." - 在Visual Studio Code中使用GDB
- Where is std::hardware_destructive_interference_size?
- 将成员函数作为构造函数参数调用时出错 "Variable is not a type name"
- What is unordered_set in C++
- 你如何理解"std: :forward is just syntactic sugar"?这是真的吗?
- C++ "error: use of overloaded operator '*' is ambiguous"似乎只有一场比赛
- C++ is calculating wrong
- Is it good to use SDL_PIXELFORMAT_UNKNOWN?
- reference_wrapper导致"incomplete type is not allowed"
- 为什么即使在定义之后仍存在"Identifier is undefined error "?
- 结构中的错误"Incomplete type is not allowed"
- SQLite INSERT 命令返回错误"column number is not unique"