ruby-on-rails - 为什么 rake 数据库 :migrate doesn't work when adding Admin to User?

标签 ruby-on-rails postgresql migration rails-migrations

我不知道为什么我不能将“Admin”列添加到我的用户表中。我在终端“rails g migration AddAdminToUsers admin:boolean”中运行,它在 db/migrate 中创建文件。当我运行 rake db:migrate 时,出现以下错误:

“PG::DuplicateColumn:错误:关系“users”的列“admin”已经存在”

在 schema.rb 文件中,我没有看到管理栏。当我运行 rake db:migrate:status 时,我可以看到“向用户添加管理员”的状态是“关闭”,而其他所有内容都是“启动”。我可以通过键入 rails db:migrate:reset 来解决这个问题,但随后我丢失了我的用户数据以及其他数据。

如何将管理列添加到我的用户表?

最佳答案

"PG::DuplicateColumn: ERROR: column "admin" of relation "users" already exists"

错误信息很清楚。您的 users 表中已有一个 admin 列。您必须先删除它,然后才能将 admin 列添加到您的 users 表中。

要删除已经存在的 admin 列,生成一个迁移:

rails g migration RemoveAdminFromUsers admin:boolean

然后运行迁移以从 users 中删除 admin:

rake db:migrate

现在您可以再次添加它:

rails g migration AddAdminToUsers admin:boolean

关于ruby-on-rails - 为什么 rake 数据库 :migrate doesn't work when adding Admin to User?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32187422/

相关文章:

c++ - 无法编译测试 PostgreSQL 程序

ruby-on-rails - Rails/Mina Gem 创建自定义任务以进行播种

api - 迁移 - 零停机时间更改 DNS 中记录的 IP

ruby-on-rails - 测试页面重定向的问题

postgresql - 允许 postgres 用户只列出他自己的数据库

ruby-on-rails - 调用 'rails new demo' 创建了一个名为 "new"的文件夹?

sql - 如何单独删除postgresql数据库中的特定列值?

c# - EntityFramework.Migrations,在 C# 类中使用 DbMigrator

ruby-on-rails - 表单中的下拉选择不将数据保存到数据库

ruby-on-rails - Ruby 调试是进入而不是跳过