SugarORM错误或缺少数据库

时间:2016-07-10 12:56:55

标签: android sqlite orm sugarorm

我试图让一个Android项目与SugarORM合作。但是,我遇到了以下错误:

  

引起:android.database.sqlite.SQLiteException:没有这样的表:DOCUMENT(代码1):,同时编译:INSERT OR REPLACE INTO DOCUMENT(ID,CREATED)VALUES(?,?)                                                                           ################################################## ###############                                                                           错误代码:1(SQLITE_ERROR)                                                                           引起:SQL(查询)错误或缺少数据库。                                                                               (没有这样的表:DOCUMENT(代码1):,编译时:INSERT OR REPLACE INTO DOCUMENT(ID,CREATED)VALUES(?,?))                                                                           ################################################## ###############

在我的AndroidManifest中,我在我的应用程序中定义了android:name="com.orm.SugarApp" - 标记并包含

 <meta-data android:name="DATABASE" android:value="idea.db" />
 <meta-data android:name="VERSION" android:value="1" />

也作为儿童标签。我已删除

<meta-data android:name="QUERY_LOG" android:value="true" />
<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" /> 
来自example

因为它们没有改变任何内容(and others had success in removing them)。我已尝试首先查询数据库(使用findById)以“强制创建表”,如this post中所述。此外,我尝试过像

这样的事情
 SugarDb sugarDb = new SugarDb(getApplicationContext()); new
 File(sugarDb.getDB().getPath())

here所述。但这也会出错。此外,我已经禁用了InstantRun-Feature,如一些帖子和此处所述(Sugar ORM No such table exception)。

有人能指出我如何摆脱“错误或丢失数据库” - 错误的正确方向吗?

3 个答案:

答案 0 :(得分:0)

您确定<meta-data android:name="DOMAIN_PACKAGE_NAME" android:value="com.example" />没有改变吗?您支持的链接似乎没有到达正确的位置。无论如何,请按照示例直到问题得到解决,然后担心可以修剪的内容!

您不需要查看数据库文件,也不确定为什么包含该文件。

你的Document类是否扩展了SugarRecord?没有它,就不会创建表。

总的来说,我认为您应该尝试从头开始重新运行“入门”,而不会在途中对代码进行任何修改。

答案 1 :(得分:0)

我有同样的问题,在我的情况下,结果证明糖版本1.4有问题。只需将您的gradle依赖关系更新为compile 'com.github.satyan:sugar:1.5'这就解决了我的问题

答案 2 :(得分:0)

如果您使用ProGuard,则必须编辑 proguard-rules.pro

将此行添加到结尾。 我的SugarRecords(模型)在模型文件夹中。

-keep class com.username.appname.models.** { *; }

并在Android Studio中停用即时运行功能。 我为SugarORM安装编写了一个教程here