常见问题与故障排除
我应该使用 generate
还是 push
?
它们在逻辑上是两个不同的命令。generate
用于创建一个 sql 文件以及 drizzle-kit
(或任何其他迁移工具)所需的附加信息。
生成这些迁移后,它们不会被应用到数据库中。 你需要在下一步中进行操作。你可以在 这里 阅读更多相关信息
另一方面,push
不需要生成任何迁移。它将简单地同步你的模式与数据库模式。请小心使用它;
我们仅推荐在本地开发和本地数据库中使用它。要了解更多相关信息,请查看 drizzle-kit push
PostgreSQL 索引的 push
和 generate
如何工作
限制
- 如果你至少在一个表达式上有一个索引,你应该手动为你的索引指定一个名称
示例
- 如果这些字段(列表如下)在现有索引中被更改,Push 不会生成语句:
.on()
和.using()
内的表达式.where()
语句- 列上的运算符类
.op()
如果你正在使用 push
工作流程,并希望在索引中更改这些字段,你将需要:
- 注释掉索引
- 推送
- 取消注释索引并更改这些字段
- 再次推送
对于 generate
命令,drizzle-kit
将由新 drizzle 索引 API 中的索引的任何属性更改触发,因此这里没有限制。