Salı, Aralık 24, 2024

PostgreSQL’de id Alanlarında UUID Kullanımı

yüksek çözünürlüklü postgresql logosu

Django kullanım sırasında id alanlarını normal sayı yerine UUID ile değiştirmek istediğinizde SQLite üzerinde herhangi bir hata ile karşılaşmazsınız ama iş PostgreSQL kullanmaya gelince ortalık itinayla karışacaktır. Özellikle daha önceden bu alanlarda id kullanıyorsanız. Daha sonra değiştirmeye kalktığınızda haliyle aşağıdaki hata sizi karşılayacak.

Aşağıdaki hata karşınıza çıkması muhtemel

django.db.utils.ProgrammingError: cannot cast type integer to uuid
LINE 1: ...BLE "news_news" ALTER COLUMN "id" TYPE uuid USING "id"::uuid

Çözüm olarak ise aşağıdaki adımları uygulayınız.

ALTER TABLE news_news ALTER COLUMN id DROP DEFAULT;
CREATE EXTENSION "uuid-ossp";
ALTER TABLE news_news ALTER COLUMN id SET DATA TYPE UUID USING uuid_generate_v4();

Sorun çözüldü, migrations dosyanızı yeniden oluşturmanız gerektiğini belirteyim, yukarıdaki hata tip çevirimlerinden kaynaklanmaktadır.