Rails 6、ActiveRecord和Mysql 8,如何将字符串字段的长度设置为512个字符?

Rails 6、ActiveRecord和Mysql 8,如何将字符串字段的长度设置为512个字符?,activerecord,ruby-on-rails-6,mysql-8.0,Activerecord,Ruby On Rails 6,Mysql 8.0,有许多示例解释了如何创建不同长度的文本字段,但仅具有以下选项: 微小:256字节(Rails中的字符串等效) 文本:65_535字节(Rails中的文本等效) 中文本:16_777_215字节 长文本:4_294_967_295字节 我找到的所有参考文献都非常古老(>3年)。这仍然有效吗 我想创建一个512个字符的字符串字段。我应该选择文本列吗?看起来像是在浪费空间。我可以装箱一个512字节的特定字段吗?看起来在新版本中,Mysql文本字段允许在字段大小上进行更多的粒度化 如果在迁移中执行此

有许多示例解释了如何创建不同长度的文本字段,但仅具有以下选项:

  • 微小:256字节(Rails中的字符串等效)
  • 文本:65_535字节(Rails中的文本等效)
  • 中文本:16_777_215字节
  • 长文本:4_294_967_295字节
我找到的所有参考文献都非常古老(>3年)。这仍然有效吗


我想创建一个512个字符的字符串字段。我应该选择
文本
列吗?看起来像是在浪费空间。我可以装箱一个512字节的特定字段吗?

看起来在新版本中,Mysql文本字段允许在字段大小上进行更多的粒度化

如果在迁移中执行此操作:

change_column :scrapers, :url, :string, limit: 512
我在sql日志中看到:

ALTER TABLE `scrapers` CHANGE `url` `url` varchar(512) NOT NULL
在mysql表结构中:

`url` varchar(512) COLLATE utf8mb4_bin NOT NULL,