我在chat_id列中创建了限制为8的迁移:
class CreateChat < ActiveRecord::Migration[5.0]
def change
create_table :bots do |t|
t.integer :user_chat_id, null: false, limit: 8, unique: true
...
t.timestamps
end
end
end
完全创建了迁移,我可以在其中插入数据。 但如果我这样做:
class Chat < ApplicationRecord
self.primary_key = 'user_chat_id'
end
发生以下错误,5187762395178250超出了限制为4的ActiveModel :: Type :: Integer的范围。
我研究并查看了文档,但我没有找到任何相关内容。
答案 0 :(得分:1)
我们也处理此错误,这是我们的情况:
id
)id
列超过最大int值(21亿-无符号整数)时,我们的应用在某些API中返回了此错误重新启动puma
服务器已解决它。
只是这个简单的命令,我们花了大约4个小时。 :((
如果您在网络服务器上使用Unicorn
或Passenger 5
或其他任何服务器,请尝试重新启动,我认为它可以解决您的问题。
希望这会有所帮助,谢谢。
答案 1 :(得分:0)
看起来你需要禁止创建主键,默认情况下是主键。因此,回滚迁移并修改迁移文件以首先包含此行:
create_table :bots, id: false do |t|
t.integer :user_chat_id, null: false, limit: 8, unique: true
...
t.timestamps
end ...
您应用于user_chat_id的选项将使其成为主键。