我试图让一个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)。
有人能指出我如何摆脱“错误或丢失数据库” - 错误的正确方向吗?
答案 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