Rah*_*hul 1 migration postgresql indexing ruby-on-rails ruby-on-rails-4
当我运行 Rails 迁移命令时。我发现索引名称太长。我的迁移文件
class AddMissingIndices < ActiveRecord::Migration
def change
# We'll explicitly specify its name, as the auto-generated name is too long and exceeds 63
# characters limitation.
add_index :mailboxer_conversation_opt_outs, [:unsubscriber_id, :unsubscriber_type],
name: 'index_mailboxer_conversation_opt_outs_on_unsubscriber_id_type'
add_index :mailboxer_conversation_opt_outs, :conversation_id
add_index :mailboxer_notifications, :type
add_index :mailboxer_notifications, [:sender_id, :sender_type]
# We'll explicitly specify its name, as the auto-generated name is too long and exceeds 63
# characters limitation.
add_index :mailboxer_notifications, [:notified_object_id, :notified_object_type],
name: 'index_mailboxer_notifications_on_notified_object_id_and_type'
add_index :mailboxer_receipts, [:receiver_id, :receiver_type]
end
end
Run Code Online (Sandbox Code Playgroud)
服务器日志是
铁轨已中止!
StandardError:发生错误,此迁移和所有后续迁移均已取消:
表“mailboxer_conversation_opt_outs”上的索引名称“index_mailboxer_conversation_opt_outs_on_unsubscriber_type_and_unsubscriber_id”太长;限制为 63 个字符 /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:1353:in
validate_index_length!' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:1166:inadd_index_options' /home/sharat /.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/connection_adapters/postgresql/schema_statements.rb:465add_index' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:315:in:在create_table'/home/sharat/.rvm/gems/ruby中的块中-2.4.3/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:314:在each' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/connection_adapters/abstract/schema_statements.rb:314:increate_table'/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord- 5.2.0/lib/active_record/migration.rb:871:在block in method_missing' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/migration.rb:840:insay_with_time 块中'/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/migration.rb :840:在say_with_time' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/migration.rb:860:inmethod_missing'/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/create_table' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/migration/compatibility.rb:75:inmigration/compatibility.rb:36:在create_table'/home/sharat/ .rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/migration.rb:604:inmethod_missing' /home/sharat/rahul/Fleet-Latest/db/migrate/20170425092621_add_conversation_optout.mailboxer_engine.rb:4:inup'/home/sharat/.rvm/gems/ruby-2.4.3/gems/ activerecord-5.2.0/lib/active_record/migration.rb:777:在“向上”
您可以尝试使用自定义(或更短)名称创建索引:
add_index(:accounts, [:branch_id, :party_id], unique: true, name: 'my_custom_and_shorter_name')
由于您已经拥有name该字段,因此只需更改索引名称即可:)
| 归档时间: |
|
| 查看次数: |
6094 次 |
| 最近记录: |