gpt4 book ai didi

mysql - 将 Postgres 序列重置为下一个 ID

转载 作者:行者123 更新时间:2023-11-29 11:46:53 26 4
gpt4 key购买 nike

发生了什么?

我们从 MySQL 迁移到 Postgres,并让 Laravel 使用 psql 驱动程序而不是 mysql 重新运行它的迁移。效果很好 - 它设置数据库很好。由于我们要从 Laravel 迁移到 Rails,因此我们创建了 Rails 迁移,以将字段重命名为“更像 Rails”,并将数据库数据(而不是结构)导入到 postgres 中。我们遇到了很多问题,但最重要的是序列现在被自动增量了。他们试图从 1 开始。

什么是我不明白的?

我可以使用诸如 SELECT pg_catalog.setval('availability_id_seq', 700, false); 之类的方法手动重置所有这些内容,但这并不是很有帮助,因为我们在多个环境中这样做很多 table 。 有没有办法找到最后一个自动增量 ID,然后从中设置序列?

如果您好奇,这里是用于移动数据的 Rails 迁移,以防任何人对我们如何做错有提示(my_models 是表数组):

my_models.each do |m|
puts m
"Mysql#{m}".constantize.find_each(batch_size: 100) do |old_model|
new_model = m.constantize.new
new_model.attributes = old_model.attributes
new_model.save
end
end

最佳答案

您可以查看以下讨论:

  1. Postgresql - Using subqueries with alter sequence expressions
  2. How to reset postgres' primary key sequence when it falls out of sync?

PostgreSQL wiki 还为您的情况提供了一个可能的解决方案:Fixing Sequences .

关于mysql - 将 Postgres 序列重置为下一个 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34777166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com