ruby-on-rails - 将 ROR 中的整数更改为 bigint

标签 ruby-on-rails activerecord command-line migration heroku-postgres

我需要将表整数更改为 BIGINT 我正在使用 RoRSQLLite

如何通过命令行将现有表字段从 Int 修改为 BigInt

最佳答案

您可以通过迁移来做到这一点。这是文档的链接:http://edgeguides.rubyonrails.org/active_record_migrations.html

基本上,您需要运行:

rails g migration change_your_column_to_bigint

并将此代码添加到迁移新迁移文件中:

def up
  execute <<-SQL
    ALTER TABLE ip_to_countries
    ALTER COLUMN your_column TYPE bigint USING your_column::bigint
  SQL
end

郑重声明,我从这里偷了这个:How do I change a string column into a bigint? ,但没有将其标记为重复,因为它涉及转换字符串列。

现在我收到此错误

SQLite3::SQLException: near "ALTER": syntax error:     ALTER TABLE posts
    ALTER COLUMN mileage TYPE bigint USING mileage::bigint
C:/Sites/jeepjig/db/migrate/20150315145856_change_mileage_to_bigint.rb:3:in `change'
C:in `migrate'
ActiveRecord::StatementInvalid: SQLite3::SQLException: near "ALTER": syntax error:     ALTER TABL
    ALTER COLUMN mileage TYPE bigint USING mileage::bigint
C:/Sites/jeepjig/db/migrate/20150315145856_change_mileage_to_bigint.rb:3:in `change'
C:in `migrate'
SQLite3::SQLException: near "ALTER": syntax error
C:/Sites/jeepjig/db/migrate/20150315145856_change_mileage_to_bigint.rb:3:in `change'
C:in `migrate'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)

运行后

class ChangeMileageToBigint < ActiveRecord::Migration
  def change
  execute <<-SQL
    ALTER TABLE posts
    ALTER COLUMN mileage TYPE bigint USING mileage::bigint
  SQL
end
end

关于ruby-on-rails - 将 ROR 中的整数更改为 bigint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29061466/

相关文章:

javascript - bootstrap-gallery,激活画廊容器上的插件

delphi - 如何在命令行上编译我的 Delphi 项目?

mysql - 延迟作业和 `master_slave_adapter` ;失去主连接

ruby-on-rails - RestKit 0.10.1 with Core Data 陡峭的学习曲线

mysql - 使用复合连接查找 ActiveRecord

sql - rails : get parent records having ZERO has_many associations

sql - 以真/假/零顺序对 bool 属性进行排序的轻量级方法

c++ - 如何查找是否以及不带括号的语句?

go - 使用 Gmail API quickstart 多次授权

ruby-on-rails - 如何在Tire内设置Elastic Search的minimum_number_should_match?