【问题标题】:error changing DB table column from integer to BigInt将数据库表列从整数更改为 BigInt 时出错
【发布时间】:2015-05-17 22:47:19
【问题描述】:

我正在尝试将我的表列从整数更改为 bigint 我创建了一个迁移,然后将此代码添加到迁移文件中。

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

但是,我在运行 rake db:migrate 时遇到此错误

C:\Sites\jeepjig>rake db:migrate
DL is deprecated, please use Fiddle
== 20150315145856 ChangeMileageToBigint: migrating ============================
-- execute("    ALTER TABLE posts\n    ALTER COLUMN mileage TYPE bigint USING mileage::bigint\n")
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

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 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'
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)

【问题讨论】:

    标签: ruby-on-rails sqlite rake


    【解决方案1】:

    根据文档sqlite 不支持 您需要将数据复制到 bigint 类型的新列并更改 它的名字

    【讨论】:

    • 看来还是建个新表,复制完数据后重命名比较好
    猜你喜欢
    • 1970-01-01
    • 2021-03-04
    • 2017-02-04
    • 2017-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多