Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 索引名“;索引“U名称”;太长了;限制为63个字符_Ruby On Rails_Ruby_Postgresql_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 索引名“;索引“U名称”;太长了;限制为63个字符

Ruby on rails 索引名“;索引“U名称”;太长了;限制为63个字符,ruby-on-rails,ruby,postgresql,ruby-on-rails-4,Ruby On Rails,Ruby,Postgresql,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_co

当我运行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
class AddMissingIndicates
服务器日志是

rails中止了

StandardError:发生错误,此迁移和所有后续迁移已取消:

表“mailboxer\u conversation\u opt\u outs”上的索引名“Index\u mailboxer\u conversation\u opt\u outs\u unsubscriber\u type\u和“unsubscriber\u id”太长;限制为63个字符 /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/connection\u adapters/abstract/schema\u语句。rb:1353:in
validate\u index\u length!'
/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/connection\u adapters/abstract/schema\u语句。rb:1166:in
add\u index\u options' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/connection\u adapters/postgresql/schema\u语句。rb:465:in
add\u index'
/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/connection\u adapters/abstract/schema\u statements.rb:315:in
create\u表中的块' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/connection\u adapters/abstract/schema\u语句。rb:314:in
each'
/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/connection\u adapters/abstract/schema\u语句。rb:314:in
create\u table' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active_record/migration.rb:871:in
块中方法_缺失'
/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration.rb:840:in
用时间在say\u中阻塞 /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration.rb:840:in
say\u with\u time'
/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration.rb:860:in
method\u missing' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration/compatibility.rb:36:in
create\u table'
/home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration/compatibility.rb:75:in
create\u table' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration.rb:604:in
method\u missing'
/home/sharat/rahul/Fleet-Latest/db/migrate/20170425092621\u add\u conversation\u optout.mailboxer\u engine.rb:4:in
up' /home/sharat/.rvm/gems/ruby-2.4.3/gems/activerecord-5.2.0/lib/active\u record/migration.rb:777:in'up'

系统使用的标识符不超过NAMEDATALEN-1字节; 可以在命令中写入更长的名称,但它们将被截断。 默认情况下,NAMEDATALEN为64,因此最大标识符长度为63 字节。如果此限制有问题,可以通过更改 src/include/pg_config_manual.h中的NAMEDATALEN常量

因此,除非您真的想要重新编译,否则63是标识符的硬限制

系统使用的标识符不超过NAMEDATALEN-1字节; 可以在命令中写入更长的名称,但它们将被截断。 默认情况下,NAMEDATALEN为64,因此最大标识符长度为63 字节。如果此限制有问题,可以通过更改 src/include/pg_config_manual.h中的NAMEDATALEN常量


因此,除非您真的需要它并希望重新编译,否则63是标识符的硬限制

您可以尝试使用自定义(更短)名称创建索引:

add_index(:accounts,[:branch_id,:party_id],unique:true,name:'my_custom_and_shorter_name')


由于您已经有了
名称
字段,只需更改索引名称:)

您可以尝试使用自定义(更短)名称创建索引:

add_index(:accounts,[:branch_id,:party_id],unique:true,name:'my_custom_and_shorter_name')


由于您已经有了
名称
字段,只需更改索引名称:)

这个答案可能会对您有所帮助。过来看。标识符有一个严格的限制(除非编译不同的代码),这个stackoverflow答案可能会帮助您。英译汉这个答案可能对你有帮助。过来看。标识符有一个严格的限制(除非编译不同的代码),这个stackoverflow答案可能会帮助您。查看。()当我将rails更新为5.2时,rails 5.0.7没有出现这种类型的错误。我收到了这个错误。。。。我必须做些什么来消除这个错误当我将rails更新到5.2时,rails 5.0.7没有出现这种类型的错误,我得到了这个错误。。。。我该怎么做才能摆脱这个错误