Android中使用的SQLite版本是什么?
原因:我想知道如何处理模式迁移.较新的SQLite版本支持"ALTER TABLE"SQL命令,这将节省我不得不复制数据,删除表,重新创建表和重新插入数据.
我有一个问题:我需要从我的SQLite数据库中删除一列.我写了这个查询
alter table table_name drop column column_name
Run Code Online (Sandbox Code Playgroud)
但它不起作用.请帮我.
我需要修改SQLite数据库中的列,但由于数据库已经在生产中,我必须以编程方式执行此操作.根据我的研究,我发现为了做到这一点,我必须做到以下几点.
对于应该相对容易的事情而言,这似乎是一项荒谬的工作量.有没有更简单的方法?我需要做的就是更改现有列的约束并为其指定默认值.
这是我的表的架构:
create table LPCG(ID integer primary key, PCG text, Desc text, test text);
Run Code Online (Sandbox Code Playgroud)
我希望删除列"test",因此使用命令:
alter table LPCG drop column test;
Run Code Online (Sandbox Code Playgroud)
这是我收到的错误消息:
Error: near "drop": syntax error
Run Code Online (Sandbox Code Playgroud)
有人可以帮我纠正我的错误吗?
另一个问题是:我理解ID是主要的键属性.我可以删掉那个专栏吗?如果没有,是否有人使用过的解决方法?
在此先感谢您的帮助.
我有一个表服务器
@Entity(tableName = "servers")
data class ServerDto(
@PrimaryKey
@ColumnInfo(name = "server_id")
var serverId: Long,
@ColumnInfo(name = "address", defaultValue = "")
var serverAddress: String,
@ColumnInfo(name = "description", defaultValue = "")
var serverDescription: String,
@ColumnInfo(name = "file_segment")
var fileSegment: Int
) : Serializable
Run Code Online (Sandbox Code Playgroud)
和一个表帐户
@Entity(tableName = "accounts", primaryKeys = ["server_id", "account_id"])
data class AccountDto(
@ColumnInfo(name = "server_id")
val serverId: Long,
@ColumnInfo(name = "account_id")
val accountId: Int,
@ColumnInfo(name = "username", defaultValue = "")
val username: String,
@ColumnInfo(name = "password", defaultValue = "")
val …Run Code Online (Sandbox Code Playgroud) 我无意间创建了一个不需要的迁移,所以我删除了文件,并在尝试运行rake db:migrate时创建了一个新的迁移,但我一直收到此错误。我正在使用SQlite3 gem和Ruby on Rails 4
StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: table "categories" already exists: CREATE TABLE "categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "category_name" varchar, "created_at" datetime NOT NULL, "updated_at" datetime NO
T NULL) D:/muse/db/migrate/20150830113519_create_categories.rb:3:in `change'
D:in `migrate'
ActiveRecord::StatementInvalid: SQLite3::SQLException: table "categories" already exists: CREATE TABLE "categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "category_name" varchar, "created_at" datetime NO
T NULL, "updated_at" datetime NOT NULL)
D:/muse/db/migrate/20150830113519_create_categories.rb:3:in `change'
D:in `migrate'
SQLite3::SQLException: table …Run Code Online (Sandbox Code Playgroud) 我正在我的 Android 应用程序中迁移 Room 数据库。这是迁移代码:
static final Migration MIGRATION_1_2 = new Migration(1, 2) {
@Override
public void migrate(SupportSQLiteDatabase database) {
database.execSQL("ALTER TABLE item RENAME itemInfoId TO itemId");
}
};
Run Code Online (Sandbox Code Playgroud)
错误信息
android.database.sqlite.SQLiteException: near "itemInfoId": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE item RENAME itemInfoId TO itemId
Run Code Online (Sandbox Code Playgroud)
我也试过 SQL "ALTER TABLE item RENAME COLUMN itemInfoId TO itemId",同样的错误
android.database.sqlite.SQLiteException: near "COLUMN": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE item RENAME COLUMN itemInfoId TO itemId
Run Code Online (Sandbox Code Playgroud) sqlite ×6
migration ×3
alter-table ×2
android ×2
android-room ×1
database ×1
dbmigrate ×1
ddl ×1
kotlin ×1
primary-key ×1
rename ×1
schema ×1
sql ×1
syntax ×1