SQLite组合主键设置外键以及出现外键匹配出错System.Data.SQLite.SQLiteException (0x80004005) SQL logic error or missing d
2015-08-24 14:46
731 查看
SQLite组合主键设置外键以及出现外键匹配出错System.Data.SQLite.SQLiteException (0x80004005) SQL logic error ormissing databaseforeign key mismatch - EntityCommodityProperty referencingCommodityPropertytemplate解决方案
转载请注明出处:http://blog.csdn.net/aaa123524457/article/details/47950907问题描述:
有一个父表,使用了组合主键(如下图):
有一个子表,需要用到上面的父表的模版信息,于是想在子表里建立外键(如下图);
结果在程序运行的时候插入数据,出现了下面的错误提示:
2015-8-24 14:19:43 ---------------------------------------- System.Data.SQLite.SQLiteException (0x80004005): SQL logic error or missing database foreign key mismatch - "EntityCommodityProperty" referencing "CommodityPropertytemplate" at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain) at System.Data.SQLite.SQLiteCommand.BuildNextCommand() at System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index) at System.Data.SQLite.SQLiteDataReader.NextResult() at System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave) at System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior) at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior) at System.Data.SQLite.SQLiteCommand.ExecuteNonQuery() at PowFundManager.SQLiteWrapper.Execute(String sqlQuery, SQLiteParameter[] parameter) |
问题分析:
由错误信息可以看出:总是提示外键不匹配!!!
其实出现问题的地方也挺简单,就是因为自己的粗心造成的。当然,截图里看到的生成之后的表,我的数据库表都是在程序里用代码直接生成的。说明这个问题有截图就够了,就不贴完整的源码了。
我的子表里新建外键的时候是这样写的:
FOREIGN KEY (CommodityProTemID) REFERENCES CommodityPropertytemplate(CommodityProTemID) ON DELETE CASCADE, |
PRIMARY KEY (CommodityProTemID,CommodityID) |
这样就肯定会出现外键不匹配的情况(foreign key mismatch)!
问题解决:
其实解决很简单,只需要设置组合外键就可以了,看代码:
父表不用改,子表代码修改如下:
FOREIGN KEY (CommodityProTemID,CommodityID) REFERENCES CommodityPropertytemplate(CommodityProTemID,CommodityID) ON DELETE CASCADE, |
转载请注明出处:http://blog.csdn.net/aaa123524457/article/details/47950907
这样,组合主键的外键设置方法、以及由组合主键引起的外键不匹配的问题就解决了!
相关文章推荐
- 连接池技术与传统数据库连接的比较和简单使用
- oracle中无法查询中文条件
- 一个Oracle循环例子
- Table is 'read only'
- Oracle修改字段类型方法总结
- 如何在Windows下利用Oracle VM VirtualBox虚拟机下安装linux
- 【Java EE 学习 29 下】【JDBC编程中操作Oracle数据库】【调用存储过程的方法】
- redis进阶
- 每天进步一点点————数据库对象优化
- Redis 使用 Eval 多个键值自增操作示例
- Sqlite学习笔记(三)&&WAL性能测试
- oracle怎样删除回收站里面的表
- 小议:部署SharePoint 2013时,无法连接SQL Server问题
- mysql始终无法插入数据
- mysqldump 用法
- MySQL备份与还原
- mysqldump: unknown option '--no-beep'
- Redis在PHP中的应用
- Mysql 转换表的引擎
- 关于 redis、memcache、mongoDB 的对比