PG :: UndefinedObject:错误:类型“ citext”不存在

时间:2019-06-10 16:58:14

标签: ruby-on-rails

对于使用Ruby 2.4.6的Rails 5.1.4应用程序,我无法使用citext进行迁移。

我有:

  1. 安装了citext扩展名
    % psql rails_development
    psql (11.2)
    Type "help" for help.

    [local] User# CREATE EXTENSION IF NOT EXISTS citext;
    NOTICE:  42710: extension "citext" already exists, skipping
    LOCATION:  CreateExtension, extension.c:1656
    CREATE EXTENSION
  1. 尝试了以下迁移:
class MigrationChangeEmail < ActiveRecord::Migration[5.1]
  def change
    enable_extension :citext

    change_column :beta_invites, :email, :citext
    change_column :invites, :email, :citext
    change_column :leads, :email, :citext
    change_column :lite_subscriptions, :email, :citext
    change_column :users, :email, :citext
    change_column :user_roles, :name, :citext
  end
end
  1. 收到以下错误:
    == 20190610155134 MigrationChangeEmail: migrating =============================
    -- enable_extension(:citext)
       -> 0.0133s
    -- change_column(:beta_invites, :email, :citext)
    rake aborted!
    StandardError: An error has occurred, this and all later migrations canceled:

    PG::UndefinedObject: ERROR:  type "citext" does not exist
    : ALTER TABLE "beta_invites" ALTER COLUMN "email" TYPE citext
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:73:in `async_exec'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:73:in `block (2 levels) in execute'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:46:in `block in permit_concurrent_loads'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activesupport-5.1.4/lib/active_support/concurrency/share_lock.rb:185:in `yield_shares'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activesupport-5.1.4/lib/active_support/dependencies/interlock.rb:45:in `permit_concurrent_loads'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:72:in `block in execute'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:612:in `block (2 levels) in log'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:611:in `block in log'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activesupport-5.1.4/lib/active_support/notifications/instrumenter.rb:21:in `instrument'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract_adapter.rb:603:in `log'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:71:in `execute'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/postgresql/schema_statements.rb:428:in `change_column'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:849:in `block in method_missing'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `block in say_with_time'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:818:in `say_with_time'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:838:in `method_missing'
    /Users/johnsmith/Documents/ie/cpc/db/migrate/20190610155134_migration_change_email.rb:5:in `change'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:792:in `exec_migration'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:776:in `block (2 levels) in migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:775:in `block in migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:408:in `with_connection'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:774:in `migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:953:in `migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1230:in `block in execute_migration_in_transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1298:in `block in ddl_transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:235:in `block in transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:194:in `block in within_new_transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/transaction.rb:191:in `within_new_transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/connection_adapters/abstract/database_statements.rb:235:in `transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/transactions.rb:210:in `transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1298:in `ddl_transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1229:in `execute_migration_in_transaction'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1201:in `block in migrate_without_lock'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `each'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1200:in `migrate_without_lock'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `block in migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1317:in `with_advisory_lock'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1148:in `migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:1007:in `up'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/activerecord-5.1.4/lib/active_record/migration.rb:985:in `migrate'
    /Users/johnsmith/.rvm/gems/ruby-2.6.3/gems/apartment-2.2.0/lib/apartment/migrator.rb:16:in `block in migrate'

0 个答案:

没有答案