0

我正在开发的 Rails 应用程序中有一个数据库,它有一个product_type定义为 varchar(255) 的字段(在 SQLite 管理器中),最终成为外键。我将名称product_type_id和类型更改为integer在 Rails 中使用迁移以使用另一个product_type文件中的现有 id 字段。完成后,Firefox 中的 SQLite 管理器将类型显示为,integer(255)而不仅仅是integer.

什么是integer(255)? 这里对另一个问题的回答说 (255) 是显示宽度。那是对的吗?目前数据库中没有数据。我是否应该删除并重新创建该字段以获得integer,否则两个字段上的数据类型将不匹配。

4

1 回答 1

3

integer(255)是因为字符串字段 [ varchar(255)] 已转换为整数,并且 DB 保持字段大小,因此在更改期间转换时它可能会保存旧数据。显然,大多数数据库不支持那么大的整数。有些人会忽略尺寸规格,但其他人会出错。无论如何,结果不是我想要的。

我发现取消限制的方法是在 Rails 中执行迁移并将限制设置为 nil。

class RemoveIntegerLimits < ActiveRecord::Migration
  def up
    change_column :inv_x_refs, :company_id, :integer, limit: nil
  end
end
于 2012-06-11T20:12:47.897 回答