这里有类似的问题,但是没有一个答案真正回答了这个问题。被采纳的答案只是展示了如何登录到控制台并销毁所有记录,这不是我在这种情况下需要的。
我需要完全删除一个单独的表(它没有关联),然后使用现有的迁移重新创建它。
是否有像这样的东西?
heroku pg:destroy_table "Products"
然后我会再次运行我的迁移,它将使用新的架构创建表:
heroku run rake db:migrate
这里有类似的问题,但是没有一个答案真正回答了这个问题。被采纳的答案只是展示了如何登录到控制台并销毁所有记录,这不是我在这种情况下需要的。
我需要完全删除一个单独的表(它没有关联),然后使用现有的迁移重新创建它。
是否有像这样的东西?
heroku pg:destroy_table "Products"
然后我会再次运行我的迁移,它将使用新的架构创建表:
heroku run rake db:migrate
heroku pg:psql 。 这应该会打开一个控制台到你的数据库,其中你可以执行任意SQL:DROP TABLE products;
你可以在Heroku文档中了解有关pg:psql的更多信息:https://devcenter.heroku.com/articles/heroku-postgresql#pgpsql
同样,你也可以在PostgreSQL文档中查看相关内容:http://www.postgresql.org/docs/9.1/static/sql-droptable.html
对于像我一样的用户来说:强烈建议不要像接受的回答中所建议的那样运行DROP TABLE products
。 考虑改用以下方法:
heroku run rake db:migrate:down VERSION=20160518643350
VERSION 是您的迁移文件上的时间戳,即下面示例中的前缀:
db/migrate/20160518643350_create_products.rb
然后,修改您的模式(或创建一个新的迁移),并运行它:
heroku run rake db:migrate:up VERSION=20160518643350
heroku pg:psql
CREATE TABLE products(foo int);
退出psql
终端。
heroku run rake db:migrate:down VERSION=20160518643350
这将删除您的新表,并记录迁移。
heroku run rake db:migrate:up VERSION=20160518643350
rake db:migrate:redo
。 - PinnyMCreate table for user
的迁移,手动删除了该迁移并创建了一个新的迁移,名称相同但字段不同。 - sergsergschema_migrations
不匹配你的迁移文件并没有什么问题,你可以(而且应该)定期删除旧的迁移文件,以避免它们阻塞进程。 - mu is too short