SQLiteのinteger型とPostgreSQLのinteger型は違うんですね
railsアプリを開発していてherokuに移行した際、エラーが発生してしまった。
ローカルで動いていたのになぜ...
$ heroku logs
でログを確認してみると
ERROR: operator does not exist: character varying = integer
と書かれている。
ググってみるとやはりデータ型に関するエラーのよう。
調べてみるとローカルで使用してるSQLiteとherokuで使用されているPostgreSQL
の
integer型のバイト数に違いがあるそうだ。
SQLite: 4バイト PostgreSQL: 1、2、3、4、6、8バイト(データサイズに依存)
今回はデータバイト数や頭にゼロが来た場合への考慮からstring型に変更するよう対応した。
class ChangeUidInUsers < ActiveRecord::Migration def up change_column :users, :uid, :string end def down raise ActiveRecord::IrreversibleMigration end end