房间迁移更改表不添加新列并一次又一次地调用迁移

2024-01-20

所以基本上我正在使用空间并尝试添加从数据库版本 1 到 2 的迁移,但我的 alter 命令不起作用 我当前的实现如下:

 void init() {
    db = Room.databaseBuilder(Global.getInstance(),
            AppDatabase.class, "feed").addMigrations(MIGRATION_1_2).build();
}

迁移属性:

static final Migration MIGRATION_1_2 = new Migration(1,2) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {


        database.execSQL("ALTER TABLE 'post' ADD COLUMN 'age' INTEGER NOT NULL DEFAULT 0");
        Log.d("VROM","Migration");
    }
};

数据库实现:

@Database(entities = {Feed.class, DownloadModel.class}, version = 1) public abstract class AppDatabase extends RoomDatabase {
public abstract DaoAccess getFeedDao();}

因此,将版本从 1 增加到 2 后,execSQL()已执行,但新列未添加到我的数据库中。 我已从应用程序目录中提取数据库并检查多次,但列不存在。除此之外,如果我杀死我的应用程序并再次启动它migrate方法被再次调用,不知道这是否是预期的功能,但它破坏了我的功能。我认为 migrate 只会被调用一次,与onUpgrade()


确保您的列属于模型类。在您的情况下,您要添加列age像这样:ADD COLUMN 'age' INTEGER,所以你必须有int age在你的模型类中。

此外,编写迁移测试以准确了解失败的原因也是一个好主意。您可以在 android 文档中找到有关迁移测试的信息:https://developer.android.com/topic/libraries/architecture/room.html#db-migration-testing https://developer.android.com/topic/libraries/architecture/room.html#db-migration-testing

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

房间迁移更改表不添加新列并一次又一次地调用迁移 的相关文章

  • BottomNavigationView - 如何获取选定的菜单项?

    我使用BottomNavigationView来切换片段 如何获取当前选定的菜单项 以防止重新打开片段 BottomNavigationView bottomNavigationView BottomNavigationView findV
  • 使用 Android 前台服务为 MediaPlayer 创建通知

    问题就在这里 我目前正在开发一个应用程序 该应用程序必须提供 A 广播播放器 来自 URL 的 AAC 直播 还有一个播客播放器 来自 URL 的 MP3 流 该应用程序必须能够在后台运行 Android 服务 并通过以下方式向用户公开持续
  • 从 Throwable 获取错误代码 - Android

    我怎样才能从错误代码可投掷 https developer android com reference java lang Throwable html public void onFailure Throwable exception 我
  • 无法在自定义 AOSP 上安装 Google Play 中的某些应用程序:项目不可用。理由:9

    我在尝试从 Google Play 安装某些应用程序时收到以下错误 LibraryUtils isAvailable not available restriction 9 DocUtils getAvailabilityRestricti
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • Android Studio 在编译时未检测到支持库

    由于 Android Studio 将成为 Android 开发的默认 IDE 因此我决定将现有项目迁移到 Android studio 中 项目结构似乎不同 我的项目中的文件夹层次结构如下 Complete Project gt idea
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 更新到材质 1.2.0 后,材质按钮上缺少圆角半径属性

    这是我的材质按钮代码
  • OnClick 事件中的 finish() 如何工作?

    我有一个Activity一键退出Activity 通过layout xml我必须设置OnClick事件至cmd exit调用 this finish 效果很好 public void cmd exit View editLayout thi
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 使用 Matrix.setPolyToPoly 选择位图上具有 4 个点的区域

    我正在 Android 上使用位图 在使用 4 个点选择位图上的区域时遇到问题 并非所有 4 点组都适合我 在某些情况下 结果只是一个空白位图 而不是裁剪后的位图 如图所示 并且 logcat 中没有任何错误 甚至是内存错误 这是我用来进行
  • 如何在不更改手机语言的情况下更改Android应用程序语言?

    我希望用户在应用程序内选择一种语言 选择语言后 我希望字符串使用特定语言 如果我更改手机语言 那么我的应用程序将以设置的语言运行 我无法找到任何在不更改手机语言的情况下设置语言的方法 此外 一旦设置了语言 更改就应该反映出来 有人可以建议一
  • Android - 将 ImageView 保存到具有全分辨率图像的文件

    我将图像放入 ImageView 中 并实现了多点触控来调整 ImageView 中的图像大小和移动图像 现在我需要将调整大小的图像保存到图像文件中 我已经尝试过 getDrawingCache 但该图像具有 ImageView 的大小 我
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • 用于推送通知的设备令牌

    我正在实施推送通知服务 我需要创建一个数据库来存储 4 个移动平台的所有设备令牌 我想根据他们的平台 iOS Android BlackBerry WP7 来组织它们 但是有什么方法可以区分平台 这样如果我只想向 Android 用户发送消
  • 为什么Android的ImageReader类这么慢?

    我尝试了适用于 Android 3 4 1 的全新 OpenCVJavaCamera2View但它太慢了 仅显示相机视图约 15 fps 当我尝试较旧的JavaCameraView相反 它给了我很好的结果 30fps 这是我相机的极限 我想
  • 在 Android 中,如何将字符串从 Activity 传递到 Service?

    任何人都可以告诉如何将字符串或整数从活动传递到服务 我试图传递一个整数 setpossition 4 但它不需要 启动时总是需要 0 Service 我不知道为什么我不能通过使用 Service 实例从 Activity 进行操作 publ
  • 无法运行我的应用程序,要求选择 Android SDK

    今天我已经安装了Android Studio 金丝雀 1 现在我无法运行我的应用程序 将出现以下对话框 我已经通过 文件 gt 项目结构 gt Android SDK 位置 设置了正确的 SDK 位置 期待您的帮助来解决这个问题 警告对话框
  • 找到 Android 浏览器中使用的 webkit 版本?

    有没有办法知道某些特定手机上的 Android 浏览器使用的是哪个版本的 webkit 软件 如果有一个您可以浏览以获取该信息的 URL 那就太好了 但任何其他方式也很好 如果你知道 webkit 版本 你就知道 html5 支持多少 至少

随机推荐

  • 将 Material-UI 的自动完成组件与 Formik 结合使用

    目前正在尝试使用 Material UI自动完成 https material ui com components autocomplete 与 Formik 的组件 到目前为止 诸如文本字段和来自 Material UI 的传统选择之类的
  • URL 重写在 Laravel 应用程序中编译的 CSS 文件中生成错误的 URL

    我尝试在 Laravel 应用程序中编译 Font Awesome SCSS 文件 Font Awesome 随 NPM 安装 编译后的 CSS 存储在 public css 文件夹中 还创建了 public fonts 文件夹 但编译后的
  • 牛顿差分插值法的正确递归python实现,获取递归内的一些返回值

    我用Python编写了一个递归函数来评估一个序列插值法 http en wikipedia org wiki Divided differences Definition 下图对此进行了图形化解释 f x f x and f x0 x1 f
  • C++ 如何传递命令行参数来读取txt文件

    我一直在努力做的是 1 通过命令行参数读取txt文件 2 使用txt文件中的字符串作为main方法 或您需要调用的任何方法 的参数 例如 有两个txt文件 其中一个名为character txt 另一个名为match txt 文件的内容将是
  • 在Android相机上实现连拍模式

    我正在尝试在 Android 相机上实现连拍模式 目前在 ICS 上 我在网上搜索试图找到一些有关此功能的文档并遇到几个问题 需要保存 可能在 asynctask 上 每个捕获的图像值 然后对其进行处理并将其保存在 SD 卡中 在连续模式下
  • 在 C# 中找出确切的文件类型[重复]

    这个问题在这里已经有答案了 如您所知 文件具有扩展名和 MIME 类型 但这两个属性不够智能 无法确定文件的确切类型 例如我有一个 exe文件 我将其重命名为扩展名二 png 因此 如果我尝试以编程方式找出它的类型或 mime 类型 结果将
  • 缩短 Zsh 中的提示

    我在让 zsh 缩短提示符时遇到了很多麻烦 我目前正在使用带有 agnoster 主题和 oh my zsh 包管理器的 zsh 目前 我的提示在工作期间变得非常长 通常约为 110 个字符 占据了我的终端的整个长度 这在美观上不太令人愉悦
  • Slick:有没有办法用正则表达式创建 WHERE 子句?

    我寻找一个相当于 select from users where last name w son 例如 当数据库中有以下名称时 first name last name Tore Isakson John Smith Solveig Lar
  • 在 C API 中使用可变参数来设置键值对是个好主意吗?

    我正在编写一个 API 它可以更新结构中的许多不同字段 我可以通过使更新函数可变参数来帮助添加未来的字段 update FIELD NAME1 10 FIELD NAME2 20 然后稍后添加FIELD NAME3无需更改任何现有调用 up
  • 我必须在标头中包含respond.js 吗?

    使用 Bootstrap3 构建一个网站 我希望它可以在 IE 上运行 当我在页面底部包含 respond js 时 它似乎有效 但我想在使用它之前确保这实际上是正确的 我的问题很简单 我在哪里包含 JS 文件 特别是 respond js
  • 如何使用 XSLT 输出重复元素?

    我有 xml 看起来像这样
  • getApplicationContext() 和 getActivity() 之间的区别

    getApplicationContext 和 getActivity 之间有什么区别this在安卓中 之间有很多区别 View getContext http developer android com reference android
  • 具有 JDBC 和 JNDI REALM 身份验证的旧应用程序

    我的应用程序当前依赖于 JDBC 领域身份验证 最近的需求迫使我们也考虑使用 LDAP 身份验证 我们正在考虑使用 Active Directory 进行身份验证和授权 角色 作为独立测试 我能够使用 AD 验证我的应用程序 但这是我未来的
  • 使用 system() 命令运行多个 R 脚本

    我在 Windows 7 中运行 RStudio 我编写了一个主脚本 该脚本生成 57 个新的 R 脚本 每个脚本都包含根据两个参数运行函数的命令 vector1 lt c 1 19 vector2 lt c 1 3 首先 主脚本使用两个
  • Javascript:更改二维数组中的单元格值

    所以 我有一个二维数组 我这样声明 var grille new Array 60 fill new Array 30 fill false 我希望能够更改数组中一个单元格的值 但是当我这样做时 grille x y new value 我
  • UILabel 子类使用自定义颜色初始化

    我的目标是设定textColor我的习惯UILabel我的视图控制器中的子类 我有一个UILabel子类名为CircleLabel 以下是它的基础知识 class CircleLabel UILabel required init code
  • 由于缺少文件,Visual Studio 2010 构建时出错

    我到处搜索 似乎找不到任何有同样问题的人 尽管我确信人们过去也犯过同样的错误 我不小心删除了调试和发布文件夹的内容 现在我收到文件未找到错误 作为背景 它是 C 中的 Windows 窗体应用程序 我正在运行 Visual Studio 1
  • WPF 在代码后面添加不带键的样式资源

    我正在从 WPF 应用程序的后台代码生成一个 xaml 并希望将样式添加到生成的 xaml 我使用资源字典来存储我的应用程序将访问的样式信息 并根据资源字典中的键将其应用于生成的 xaml 中的相应元素 现在我想将特定样式应用于生成的 xa
  • 运行 AWS CLI 命令时出现“configparser.DuplicateOptionError”

    在mac终端中执行以下命令时出现错误 aws configure 我在网上找不到任何有用的东西 而且我是 mac 和 aws 的新手 有人可以帮我解决吗 其他命令也会发生同样的事情 例如aws version命令如which aws会正常工
  • 房间迁移更改表不添加新列并一次又一次地调用迁移

    所以基本上我正在使用空间并尝试添加从数据库版本 1 到 2 的迁移 但我的 alter 命令不起作用 我当前的实现如下 void init db Room databaseBuilder Global getInstance AppData