登录
首页 >  Golang >  Go问答

数据库迁移时的回滚操作使用 goose 工具

来源:stackoverflow

时间:2024-03-10 19:45:25 270浏览 收藏

知识点掌握了,还需要不断练习才能熟练运用。下面golang学习网给大家带来一个Golang开发实战,手把手教大家学习《数据库迁移时的回滚操作使用 goose 工具》,在实现功能的过程中也带大家重新温习相关知识点,温故而知新,回头看看说不定又有不一样的感悟!

问题内容

我用的是这个鹅味。我希望我的迁移脚本在出现错误时回滚。将我的语句包装在 -- +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:您的 sql 语法有错误;检查与您的 mysql 服务器版本相对应的手册,了解在“update...”附近使用的正确语法。

这对鹅来说可能吗?或者我是否需要在一个迁移文件中只编写一个查询?


正确答案


根据 MySQL 5.7 documentation,大多数 DDL 查询无法作为事务执行。

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

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

今天关于《数据库迁移时的回滚操作使用 goose 工具》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>