ALTER TABLE迁移不会更新生成的代码

时间:2020-08-04 15:51:48

标签: kotlin sqldelight

我正在编写一个用于更改表的迁移文件,添加了新列,但是生成的代码未更新,因此无法将新记录插入到表中,但新列中的值仍然存在。

示例:


// BankAccount.sq file
    
CREATE TABLE bank_account (
    id INTEGER PRIMARY KEY,
    bank_code TEXT NOT NULL,
    account_number INTEGER NOT NULL,
    account_digit INTEGER NOT NULL
);

selectALL:
SELECT * FROM bank_account;
    
insert:
INSERT INTO bank_account VALUES (?,?,?,?);

// 1.sqm file
ALTER TABLE bank_account ADD COLUMN bank_name TEXT;

添加该列后,似乎未更新生成的代码。例如,insert函数不会更新为将新添加的列接收到表中,并且内部生成的Kotlin代码不会使用新列进行更新。

有什么办法可以绕过这个问题?

2 个答案:

答案 0 :(得分:1)

CREATE TABLE始终是架构的全新版本,因此您还需要在CREATE TABLE中添加该列。如果要将迁移文件作为事实的来源,则需要启用deriveSchemaFromMigrations,如下所示:https://cashapp.github.io/sqldelight/jvm_mysql/#migration-schema

答案 1 :(得分:0)

抱歉无法发表评论,不是“ VALUES”而不是“ VALUE”吗?