2013-11-25 51 views
3

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

所以我创建了我的表列如下所示:

t.column :fingerprint, 'BIGINT UNSIGNED' 

作品般的魅力。

但运行

rake db:reset 

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

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

手动编辑为 “BIGINT UNSIGNED” 的作品,但被立即更换,当我运行“耙分贝:重新设置“。

有没有什么办法可以在重置之间持续存在?

回答

-1

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

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

config.active_record.schema_format = :sql

您可以在导轨导向更详细的解释:http://guides.rubyonrails.org/migrations.html#types-of-schema-dumps

+0

您好我想知道是否有人曾试图此。我试图进入这个配置项目,但我仍然得到一个schema.rb其limit => 8.我似乎无法找到任何其他方式让我的迁移为我提供一个更大的有符号整数列类型? – Ben

+0

您的旧schema.rb将仍然存在于您的项目中,但您应该在此之后还有一个schema.sql,Rails将使用该schema.sql。 – toadle

相关问题