Rails迁移-Mysql2 :: Error:指定的密钥太长;最大密钥长度为767字节

尼古拉·科西奇

我正在研究Ruby on Rails项目。

我正在使用MySQL2作为适配器。

这是迁移文件之一。

class CreatePages < ActiveRecord::Migration[6.0]
  def change
    create_table :pages do |t|
      t.string :base_url, null: false
      t.string :html, null: false
      t.string :styles, null: false
      t.text :images, null: false

      t.timestamps
    end

    add_index :pages, [:base_url, :html, :styles, :images], length: { images: 767 }, unique: true
  end
end
rake db:migrate

我收到此错误。

Mysql2::Error: Specified key was too long; max key length is 767 bytes
/home/ubuntu/project/db/migrate/20200504001308_create_pages.rb:12:in `change'

Caused by:
ActiveRecord::StatementInvalid: Mysql2::Error: Specified key was too long; max key length is 767 bytes
/home/ubuntu/project/db/migrate/20200504001308_create_pages.rb:12:in `change'

Caused by:
Mysql2::Error: Specified key was too long; max key length is 767 bytes
/home/ubuntu/project/db/migrate/20200504001308_create_pages.rb:12:in `change'

谁能帮我?

佐兰

根据表的编码,某些字符集每个字符可以使用多个字节。utf8MySQL中编码要求每个字符3个字节,因此此编码的字符串限制应为255(767/3)。如果编码为utf8mb4,则每个字符需要4个字节,则限制应设置为191(767/4)。

因此,您的迁移文件可能如下所示:

class CreatePages < ActiveRecord::Migration[6.0]
  def change
    create_table :pages do |t|
      t.string :base_url, limit: 191, null: false
      t.string :html, limit: 191, null: false
      t.string :styles, limit: 191, null: false

      # etc ...
    end
  end
end

这似乎是旧MySQL版本的限制,这就是Rails默认不处理这种情况的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Mysql :: Error:指定的密钥太长;最大密钥长度为767个字节:CREATE INDEX

来自分类Dev

指定的密钥太长;实体框架6中的最大密钥长度为767个字节Mysql错误

来自分类Dev

带有MySql和Migrations的实体框架失败,因为“最大密钥长度为767字节”

来自分类Dev

Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

来自分类Dev

Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

来自分类Dev

创建新迁移时,Rails Mysql2::Error 表不存在

来自分类Dev

指定的密钥太长;最大密钥长度为767字节

来自分类Dev

#1071-指定的密钥太长;最大密钥长度为767字节

来自分类Dev

Mysql2::Error: Unknown column in where 子句 Rails

来自分类Dev

MySQL最大密钥太长,密钥小于767

来自分类Dev

在 mysql2 上迁移的问题。导轨

来自分类Dev

实体框架核心:无法在生产服务器上运行迁移脚本,聚集索引的最大密钥长度为900字节

来自分类Dev

ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行-Rails 4.2.6

来自分类Dev

rails 4:Mysql2 :: Error:您的SQL语法有错误

来自分类Dev

Rails Server导致Mysql2错误

来自分类Dev

Ruby on Rails MySQL2 ::错误

来自分类Dev

Rails从mysql2渲染HTML

来自分类Dev

rails db:migrate rails 中止!Mysql2::Error: Access denied for user 'root'@'localhost' (using password: YES)

来自分类Dev

Ruby on Rails-无法加载此类文件-mysql2 / 2.2 / mysql2(LoadError)

来自分类Dev

Mysql2 :: Error:尝试获取锁时发现死锁;尝试重新启动事务(Ruby on Rails)

来自分类Dev

随机在mysql2中用于Rails 4应用

来自分类Dev

Rails database_url转义mysql2 url passwod

来自分类Dev

Mysql2::Error: 指定的鍵太長;對於只有 87 個 db 字段的表,最大密鑰長度為 767 字節

来自分类Dev

Mysql2 :: Error:超出范围值

来自分类Dev

Mysql2 :: Error:超出范围值

来自分类Dev

Mysql2 :: Error:表“对话”已存在

来自分类Dev

ActiveRecord::StatementInvalid: Mysql2::Error: 重命名错误

来自分类Dev

1071-指定的密钥太长;最大密钥长度为1000个字节

来自分类Dev

rails mysql2:如何验证mysql服务器的SSL证书?

Related 相关文章

  1. 1

    Mysql :: Error:指定的密钥太长;最大密钥长度为767个字节:CREATE INDEX

  2. 2

    指定的密钥太长;实体框架6中的最大密钥长度为767个字节Mysql错误

  3. 3

    带有MySql和Migrations的实体框架失败,因为“最大密钥长度为767字节”

  4. 4

    Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

  5. 5

    Rails 4迁移:Mysql2 :: Error:数据对于列“ xxxx”而言过长

  6. 6

    创建新迁移时,Rails Mysql2::Error 表不存在

  7. 7

    指定的密钥太长;最大密钥长度为767字节

  8. 8

    #1071-指定的密钥太长;最大密钥长度为767字节

  9. 9

    Mysql2::Error: Unknown column in where 子句 Rails

  10. 10

    MySQL最大密钥太长,密钥小于767

  11. 11

    在 mysql2 上迁移的问题。导轨

  12. 12

    实体框架核心:无法在生产服务器上运行迁移脚本,聚集索引的最大密钥长度为900字节

  13. 13

    ActiveRecord :: StatementInvalid:Mysql2 :: Error:无法删除或更新父行-Rails 4.2.6

  14. 14

    rails 4:Mysql2 :: Error:您的SQL语法有错误

  15. 15

    Rails Server导致Mysql2错误

  16. 16

    Ruby on Rails MySQL2 ::错误

  17. 17

    Rails从mysql2渲染HTML

  18. 18

    rails db:migrate rails 中止!Mysql2::Error: Access denied for user 'root'@'localhost' (using password: YES)

  19. 19

    Ruby on Rails-无法加载此类文件-mysql2 / 2.2 / mysql2(LoadError)

  20. 20

    Mysql2 :: Error:尝试获取锁时发现死锁;尝试重新启动事务(Ruby on Rails)

  21. 21

    随机在mysql2中用于Rails 4应用

  22. 22

    Rails database_url转义mysql2 url passwod

  23. 23

    Mysql2::Error: 指定的鍵太長;對於只有 87 個 db 字段的表,最大密鑰長度為 767 字節

  24. 24

    Mysql2 :: Error:超出范围值

  25. 25

    Mysql2 :: Error:超出范围值

  26. 26

    Mysql2 :: Error:表“对话”已存在

  27. 27

    ActiveRecord::StatementInvalid: Mysql2::Error: 重命名错误

  28. 28

    1071-指定的密钥太长;最大密钥长度为1000个字节

  29. 29

    rails mysql2:如何验证mysql服务器的SSL证书?

热门标签

归档