【问题标题】:Using "BIGINT UNSIGNED" in Rails schema / Active Record在 Rails 架构/Active Record 中使用“BIGINT UNSIGNED”
【发布时间】:2013-11-25 09:35:44
【问题描述】:

我有一个 Rails 应用程序,它需要能够将文件指纹保存在 mysql 数据库中。这些指纹是填充 BIGINT 完整范围的数字,甚至需要 UNSIGNED 的额外空间。我不能使用“VARCHAR”,因为稍后需要在数据库端执行数学运算。

所以我像这样创建了我的表格列:

t.column :fingerprint, 'BIGINT UNSIGNED'

像魅力一样工作。

但是在运行的时候

rake db:reset

我总是得到一个 schema.rb,其中包括:

t.integer  "fingerprint", :limit => 8

手动编辑到“BIGINT UNSIGNED”有效,但当我再次运行“rake db:reset”时会立即被替换。

有什么方法可以在两次重置之间保持这种状态?

【问题讨论】:

    标签: mysql ruby-on-rails activerecord rails-activerecord


    【解决方案1】:

    解决方案非常简单。如果您将应用程序的架构格式设置为 :sql 一切都应该按预期工作。

    编辑您的 config/application.rb 并进行以下更改/添加:

    config.active_record.schema_format = :sql

    您可以在rails指南中找到更详细的解释:http://guides.rubyonrails.org/migrations.html#types-of-schema-dumps

    【讨论】:

    • 嗨,我想知道是否有人试过这个。我尝试输入此配置项,但仍然得到一个具有限制 => 8 的 schema.rb。我似乎无法找到任何其他方式让我的迁移为我提供更大的有符号整数列类型?
    • 您的旧 schema.rb 仍将存在于您的项目中,但之后您还应该有一个 schema.sql,Rails 将使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多