【问题标题】:change an integer to bigint in ROR在 ROR 中将整数更改为 bigint
【发布时间】:2015-03-15 23:08:03
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案1】:

    您可以通过迁移来做到这一点。这是文档的链接: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
    

    【讨论】:

    • 我在 SQL 语句中遇到错误..有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2020-06-10
    • 2021-11-02
    • 2017-02-04
    • 2016-01-28
    • 2017-09-07
    • 2013-09-24
    相关资源
    最近更新 更多