buffalo项目中需用buffalo pop generate fizz生成带时间戳前缀的迁移文件,再通过soda migrate up -d -e development预览sql(不执行),执行则用soda migrate up -e development,回滚用soda migrate down -e development。

你需要在Buffalo项目中生成数据库迁移文件并执行它,但不能直接用buffalo db migrate命令预览SQL,必须借助底层pop/soda CLI才能看到将要执行的语句;迁移文件命名依赖时间戳前缀,顺序错误会导致执行混乱。
生成迁移文件
运行命令生成fizz格式迁移文件:buffalo pop generate fizz create_users。
该命令会在migrations/目录下创建类似20260923110601_create_users.up.fizz的文件,文件名开头是当前精确到秒的时间戳——【这是soda识别执行顺序的唯一依据】,手动改名或复制旧文件会导致迁移错乱。
打开生成的.up.fizz文件,补全表结构定义。例如:
create_table("users", func(t *Table) {<br> t.Column("id", "integer", {"primary": true})<br> t.Column("name", "string", {})<br> t.Column("email", "string", {})<br>})
注意:fizz语法不支持复合主键、自增字段需显式写{"auto_increment": true},否则PostgreSQL会报错。
执行迁移(含预览)
方法一:只预览SQL,不执行
确保database.yml中development环境配置完整且dialect正确(如postgres),然后执行:soda migrate up -d -e development。
Buffalo框架 1.0.1 版本源码包下载,适合需要错误处理改进、依赖更新、render.Download 注释和 request logger 调整的 v1 项目。
这一步输出的是待执行的原始SQL,不会连接数据库,也不会修改schema;【若database.yml里没有development块,soda会静默fallback到test环境,极易误操作生产库】。
方法二:真正执行迁移
停掉正在运行的buffalo dev进程——因为dev启动时会自动执行buffalo db migrate,这个过程完全静默,无法中断也无法查看SQL。
执行:soda migrate up -e development。
它会按文件名时间戳升序,依次执行所有未运行过的.up.fizz文件,并把记录写入schema_migrations表。
方法三:回滚上一次迁移
执行:soda migrate down -e development。
它只回滚最后一次成功执行的.up.fizz对应的.down.fizz文件;如果该文件不存在,命令直接失败,不会尝试推导反向SQL。










