# Errore: intero fuori intervallo

**URL:** <https://meta.discourse.org/t/error-integer-out-of-range/200619>\
**Category:** Bug\
**Created:** [16 Agosto 2021, 4:35pm UTC](https://meta.discourse.org/t/error-integer-out-of-range/200619 "2021-08-16T16:35:24Z")\
**Posts on this page:** 1\
**Showing post:** 26

<div class="post-metadata">

**Author:** ![bjlarouche](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/bjlarouche/32/240230_2.png) [@bjlarouche](https://meta.discourse.org/u/bjlarouche)\
**Post date:** [16 Febbraio 2023, 8:01pm UTC](https://meta.discourse.org/t/error-integer-out-of-range/200619/26 "2023-02-16T20:01:47Z")

</div>

Penso che ora siamo fuori pericolo!

Abbiamo notato che era necessario migrare le colonne in altre tabelle che facevano riferimento a `notification_id` oltre a `notifications.id` stesso. Altrimenti, `services/notifications.rb` o `services/badge_granter.rb` avrebbero generato errori.

* * *

Per qualsiasi altro **grande** setup di forum che si imbatta in questo in futuro con le notifiche, ecco cosa abbiamo fatto…

In totale, abbiamo dovuto migrare quattro colonne in quattro tabelle:

1. `notifications.id`
2. `user.seen_notification_id`
3. `user_badges.notification_id`
4. `shelved_notifications.notification_id`

Inizialmente abbiamo proceduto con il comando ALTER suggerito sopra per il punto 1, ma poi, come menzionato, abbiamo optato per utilizzare le migrazioni ActiveRecord, in modo che i file di migrazione si aggiungano allo schema.

> **20230215070319\_change\_notifications\_id\_to\_bigint.rb**
>
> ```rb
> # frozen_string_literal: true
> 
> class ChangeNotificationsIdToBigint < ActiveRecord::Migration[6.1]
> def change
> change_column :notifications, :id, :bigint
> end
> end
> 
> ```

> **20230215070320\_change\_user\_seen\_notification\_id\_to\_bigint.rb**
>
> ```rb
> # frozen_string_literal: true
> 
> class ChangeUserSeenNotificationIdToBigint < ActiveRecord::Migration[6.1]
> def change
> change_column :users, :seen_notification_id, :bigint
> end
> end
> 
> ```

> **20230215070321\_change\_user\_badges\_notification\_id\_to\_bigint.rb**
>
> ```rb
> # frozen_string_literal: true
> 
> class ChangeUserBadgesNotificationIdToBigint < ActiveRecord::Migration[6.1]
> def change
> change_column :user_badges, :notification_id, :bigint
> end
> end
> 
> ```

> **20230215070322\_change\_shelved\_notifications\_notification\_id\_to\_bigint.rb**
>
> ```rb
> # frozen_string_literal: true
> 
> class ChangeShelvedNotificationsNotificationIdToBigint < ActiveRecord::Migration[6.1]
> def change
> change_column :shelved_notifications, :notification_id, :bigint
> end
> end
> 
> ```

Abbiamo un Dockerfile personalizzato nel nostro setup (costruiamo immagini in modo da poter eseguire discourse e sidekiq su risorse separate in Kubernetes), quindi copiare questi file in `/db/migrate` come parte del nostro Dockerfile è stato semplice.

Poi, abbiamo semplicemente lasciato che `rake db:migrate` facesse il resto. Una volta eseguito un riavvio graduale di tutti i nostri pod discourse e sidekiq, tutto funzionava come previsto 🤞.

---

_[View the full topic](https://meta.discourse.org/t/error-integer-out-of-range/200619)._
