1

我正在使用这种鹅味。我希望我的迁移脚本在出现错误时回滚。把我的陈述包装在里面-- +goose StatementStart-- +goose StatementEnd对我不起作用。

-- +goose Up
-- SQL in section 'Up' is executed when this migration is applied
-- +goose StatementBegin
ALTER TABLE books
    ADD COLUMN author VARCHAR(10) NOT NULL AFTER name;

UPDATE books
SET author = created_by
WHERE created > '2021-01-05';
-- +goose StatementEnd

-- +goose Down
-- SQL section 'Down' is executed when this migration is rolled back
-- +goose StatementBegin
ALTER TABLE books
    DROP COLUMN author;
-- +goose StatementEnd

这导致Error 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE....

鹅有可能吗?还是我只需要在一个迁移文件中编写一个查询?

4

1 回答 1

1

根据MySQL 5.7 文档,大多数 DDL 查询不能作为事务执行。

因此,这应该无法通过任何解决方法来完成,因为它与底层数据库类型和版本相关联。

@mh-cbon感谢您指出这一点。

于 2021-07-25T13:12:16.273 回答