- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我希望有人能够帮助解决我的 SQLite 数据库问题。
在使用 C# 查询我的 SQLite 数据库时,我收到了 ConstraintException
。完整的异常消息是“无法启用约束。一行或多行包含违反非空、唯一或外键约束的值。
”我最初使用访问功能构建这个数据库,效果很好,但出于各种原因,我不得不使用 SQLite 重新创建它。
提供一些背景信息 - 这是一个简单的状态调度程序。每个 Status
都有一个关联的 Account
和 Schedule
。我意识到 Statuses
和 Schedule
是 1:1 的关系,可以在同一个表中,但为了让程序进一步发展,我将它们分成两个表。
请参阅下面我的表脚本的简化版本(这足以重现问题)。
PRAGMA foreign_keys = ON;
CREATE TABLE Accounts
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
Name char(100));
CREATE TABLE Statuses
(ID INTEGER PRIMARY KEY AUTOINCREMENT,
AccountId INTEGER REFERENCES Accounts(ID) ON DELETE CASCADE,
Text char(140));
CREATE TABLE Schedule
(ID INTEGER PRIMARY KEY REFERENCES Statuses(ID) ON DELETE CASCADE,
StartDate char(255),
Frequency INT);
在创建两个 Statues
并将它们关联到同一个 Account
之前,我没有遇到任何问题。
Accounts
ID Name
1 Fred Blogs
Statuses
ID AccountId Text
1 1 “Some text”
2 1 “Some more text”
Schedule
ID StartDate Frequency
1 16/02/2011 1
2 16/02/2011 1
我使用的抛出异常的 select 语句是:
SELECT Statuses.Id, Statuses.Text, Accounts.Id, Accounts.Name, Schedule.StartDate, Schedule.Frequency
FROM [Statuses], [Accounts], [Schedule]
WHERE Statuses.AccountId = Accounts.Id AND Statuses.Id = Schedule.Id
如果我运行相同的查询,但删除“Accounts.Id
”列,查询工作正常。
下面是我正在使用的 C# 代码,但我认为这不是问题所在
public DataTable Query(string commandText)
{
SQLiteConnection sqliteCon = new SQLiteConnection(ConnectionString);
SQLiteCommand sqliteCom = new SQLiteCommand(commandText, sqliteCon);
DataTable sqliteResult = new DataTable("Query Result");
try
{
sqliteCon.Open();
sqliteResult.Load(sqliteCom.ExecuteReader());
}
catch (Exception)
{
throw;
}
finally
{
sqliteCon.Close();
}
return sqliteResult;
}
任何帮助将不胜感激。谢谢。
最佳答案
错误是由于 Statuses 表和 Schedule 表中的 ID 列而发生的。如果它们不重要,请从两个表中删除这些列。
关于c# - 使用 C# 查询 SQlite 数据库时出现 ConstraintException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015969/
我有一个独立的应用程序,它在将平面文件导入 SQL 数据库之前对其进行数据检查。 在这样的上下文中,抛出 System.Data.ConstraintException 是否有意义? (这个例子是人为
我有一个独立的应用程序,它在将平面文件导入 SQL 数据库之前对其进行数据检查。 在这样的上下文中,抛出 System.Data.ConstraintException 是否有意义? (这个例子是人为
我对 Rails 完全陌生,我几乎不知道自己在做什么。但。问题是:使用 Devise 注册新用户会导致: SQLite3::ConstraintException: column email is n
我正在尝试学习 Ruby on Rails,但遇到了一个需要帮助的问题。我想做的是创建一个带有表单的“项目经理”,但是当我填写表单并点击提交时,会显示以下错误: ActiveRecord::State
我在更新/创建 CoverImage 对象时使用 saveOrUpdate()。偶尔我会在主键上遇到约束冲突。 org.hibernate.exception.ConstraintViolationE
我正在使用 C#/Mono 访问 Sqlite 数据库。 以下查询在任何数据库应用程序中都能正常工作,但当我尝试加载结果时 DataTable 一直提示。 这是一个片段 cmd.Command
我正在使用 DevExpress GridControl 创建一个表单,使用户能够输入一些数据。网格绑定(bind)到 DataTable,其中一列定义为唯一的数据源。 DataTable dtDet
我有两个表 orders 和 orderdetails 表订单(PK = id,orderno 上的 UNIQUE 索引) |id|orderno| | 1|1000 | | 2|1001 |
我希望有人能够帮助解决我的 SQLite 数据库问题。 在使用 C# 查询我的 SQLite 数据库时,我收到了 ConstraintException。完整的异常消息是“无法启用约束。一行或多行包含
我有一个创建艺术家并将其与用户关联的 resque 工作。用户 has_and_belongs_to_many :艺术家,艺术家 has_and_belongs_to_many :用户。 def se
我觉得我遗漏了一些非常明显的东西,但我正在做的是测试 destroy在我的用户模型上路由。 当我尝试和 @user.destroy ,我得到以下异常: *** ActiveRecord::Invali
给定以下 ASP.NET MVC Controller 代码: [HttpPost] public ActionResult Create(FormCollection collect
我正在关注 Rails 教程。我在 ch。 6,我在使用 SQLite3 时遇到一个奇怪的错误(为了记录,我使用的是 sqlite 版本 1.3.10,而教程使用的是 1.3.9) 我在运行 rake
在我的模型中,项目拥有并属于许多用户,因此他们有一个连接表 projects_users。当我插入线 @project.members += User.find params[:member_ids]
我正在将 Devise 和 Paperclip 与 Rails 4 应用程序一起使用。 我正在尝试找出无法为同一用户添加另一个 pin 的原因。据我从错误中了解到,它具有用户独特性。我对吗?如何修复它
当我运行 rake db:seed 时,有些东西坏了! 我收到以下错误: ray@ray-virtual-machine:~/ticketee$ rake db:seed rake aborted!
我刚刚安装了 devise gem,但出现以下错误: Error: AccountsControllerTest#test_should_update_account: ActiveRecord::R
我正在使用Sqlite开发Rails应用程序,并且有一个与其他几个表关联的用户表。尝试在Users中重命名列时,运行rails db:migrate时出现主题错误。 我在这里看到很多类似问题的帖子,但
我正在尝试对我的应用程序运行单元测试,我最初的错误是“表 xx 没有名为 yy 的列”,因此在我的 yml 文件中我将字段更改为 id。但是,现在它给了我这个错误: CarsControllerTes
我是 Ruby on Rails 的新手。我尝试制作标签并可以选择删除标签。当我想销毁标签时,我收到此错误 SQLite3::ConstraintException: FOREIGN KEY cons
我是一名优秀的程序员,十分优秀!