当前位置: 首页 > 面试题库 >

Room-未将模式导出目录提供给注释处理器,因此我们无法导出模式

吕森
2023-03-14
问题内容

我正在使用Android数据库组件室

我已经配置了所有内容,但是在编译时,Android Studio会显示以下警告:

架构导出目录未提供给注释处理器,因此我们无法导出架构。您可以提供room.schemaLocation注释处理器参数,也可以
将exportSchema设置为false。

据我了解,这是数据库文件所在的位置

它如何影响我的应用程序?最佳做法是什么?我应该使用默认位置(false值)吗?


问题答案:

根据文档:

您可以设置注释处理器参数(room.schemaLocation)来指示Room将架构导出到文件夹中。尽管不是强制性的,但在代码库中保留版本历史记录是一个好习惯,您应该将该文件提交到版本控制系统中(但不要随应用程序一起发布!)。

因此,如果您不需要检查架构并且想要摆脱警告,只需将添加exportSchema = falseRoomDatabase,如下所示。

@Database(entities = { YourEntity.class }, version = 1, exportSchema = false)
public abstract class AppDatabase extends RoomDatabase {
   //...
}

如果您遵循以下@mikejonesguy答案,则将遵循docs中提到的良好做法:)。基本上,您会.json../app/schemas/文件夹中得到一个文件。它看起来像这样:

{
  "formatVersion": 1,
  "database": {
    "version": 1,
    "identityHash": "53db508c5248423325bd5393a1c88c03",
    "entities": [
      {
        "tableName": "sms_table",
        "createSql": "CREATE TABLE IF NOT EXISTS `${TABLE_NAME}` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `message` TEXT, `date` INTEGER, `client_id` INTEGER)",
        "fields": [
          {
            "fieldPath": "id",
            "columnName": "id",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "message",
            "columnName": "message",
            "affinity": "TEXT"
          },
          {
            "fieldPath": "date",
            "columnName": "date",
            "affinity": "INTEGER"
          },
          {
            "fieldPath": "clientId",
            "columnName": "client_id",
            "affinity": "INTEGER"
          }
        ],
        "primaryKey": {
          "columnNames": [
            "id"
          ],
          "autoGenerate": true
        },
        "indices": [],
        "foreignKeys": []
      }
    ],
    "setupQueries": [
      "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)",
      "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, \"53db508c5248423325bd5393a1c88c03\")"
    ]
  }
}

如果我的理解是正确的,那么每次数据库版本更新时,您都会获得一个这样的文件,以便您可以轻松地跟踪数据库的历史记录。



 类似资料:
  • 我正在使用Android数据库组件室 我已经配置了所有的东西,但是当我编译的时候,Android Studio给了我这个警告: 模式导出目录未提供给注释处理器,因此我们无法导出模式。您可以提供注释处理器参数,或者将exportSchema设置为false。 据我所知,它是DB文件的所在位置 怎么会影响我的APP?这里的最佳实践是什么?是否应该使用默认位置(值)?

  • 如何从Cassandra或Cassandra cqlsh提示导入和导出模式?

  • constMemory(string $fileName); 示例 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); ​ $fileObject = $excel->constMemory('tutorial01.xlsx'); $fileHandle = $fileObject->getH

  • 在我的index.js中,我使用webpack-dev-middleware/webpack-hot-middleware,我需要我的webpack.config并将其用于编译器。 index.js 我试图通过require和module.exports使用Common.js导出我的webpack.config,但出现错误 webpack.config 如果我使用ES6(我使用的是Babel,这通

  • 本文向大家介绍登录超时给出提示跳到登录页面(ajax、导入、导出),包括了登录超时给出提示跳到登录页面(ajax、导入、导出)的使用技巧和注意事项,需要的朋友参考一下 一、一般页面登录超时验证,可以用过滤器filter,如下: web.xml配置 二、ajax提交 提交页面,我的页面提示弹出框架用的asyncBox,可以改成其他的跳转 后台: 1.处理数据前 三、异步导入excel 用AjaxUp