大家都在用什么数据库 migrate 工具?

2014-07-07 09:11:43 +08:00
 hustlzp
大家都在用什么数据库 migrate 工具呢?

一直在用Flask-Migrate,是对alembic的简单封装,然后提供了一些Flask-Script命令。

但感觉alembic不太好用:

1. 它默认使用随机数来命名文件,这样不容易看出时间的先后顺序(当然,改一下配置文件应该就可以实现用时间命名...)。

2. migrate脚本之间的先后顺序是定义在文件中的down_version的,多个人在不同分支中对同一个节点进行migrate,完了merge的时候又要手动修改down_version,好麻烦...

3. 单个脚本的执行不具有原子性,如果执行某个脚本的时候中途失败,之前执行的也不会rollback,挺麻烦的。

感觉没有RoR中自带的migrate工具方便。

alembic的开发者就是SQLAlchemy的作者Mike Bayer,从 https://bitbucket.org/zzzeek/alembic 来看,commits还是比较频繁的。听说下一版会有比较大的提升,希望如此吧~
6061 次点击
所在节点    Python
6 条回复
nine
2014-07-07 09:57:30 +08:00
转rails 妥妥的~
hellojinjie
2014-07-07 10:21:16 +08:00
广告广告!!!

遇到这个帖子,赶紧贴个广告 https://github.com/hellojinjie/dbmigrate 求 star

史上最好用的 Database Migration Tool 自产自销,欢迎试用。

1. 我不用随机数命名文件!! 我用时间戳!!!

2. 这个不太明白,down_version 是什么意思? 我的工具中文件名是时间戳,时间戳就是顺序

3. rollback 这个太复杂啦,DDL语句是隐式commit,MyISAM 表又是不支持事务的。如果不采用数据库自带的事务功能的话,需要维护一个 up 脚本和一个 down脚本,(up 脚本用来 apply 数据库更改,down用来撤销数据库更改),但是在实际的使用过程中根!本!就没有人会去维护down 脚本,所以简单起见,仅保留up脚本。

jj@hellojinjie report :) $ tree
.
├── configure.xml
├── configure.xml-template
├── dbmigrate.bat
├── dbmigrate.jar
├── dbmigrate.sh
├── log4j.properties
├── migrations
│   ├── m000000_000000_base.sql
│   ├── m140409_135940_add_charset_to_temporary_table.sql
│   ├── m140415_180101_insert_data_to_report_table.sql
│   ├── m140418_101256_add_network_type_to_user_view.sql
│   ├── m140508_095947_repopulate_dim_geo_city.sql
│   ├── m140519_180940_add_popular_into_monitor.sql
│   ├── m140529_150622_change_duration_to_bigint.sql
│   ├── m140604_173900_add_table_recover_date.sql
│   └── m140630_133200_add_user_view_csv_report.sql
├── mysql.exe
└── README.txt

1 directory, 17 files
no13bus
2014-07-07 10:29:23 +08:00
django的新版本1.7里面自带的迁移工具不错。
hustlzp
2014-07-07 11:42:46 +08:00
@hellojinjie 赞一个!down_version就是表示某个migrate文件的上一个节点。这是alembic的设计。
hustlzp
2014-07-07 11:43:53 +08:00
@no13bus 恩。最近很少用Django了。
P9
2014-07-08 10:40:17 +08:00
south 挺赞,不过是django的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/121282

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX