2012-01-07 17 views
5

Bir test SQLite veritabanından bir PostgreSQL veritabanına geçiş yapıyorum.Django ve PostgreSQL - tür karakter için çok uzun değer (512)

SQLite üzerinde çalışan ancak PostgreSQL'de bir hata veren, veritabanına eklenmiş bir örnek nesnem var.

Kod pasajı geçerli:

DatabaseError at /create/ 
value too long for type character varying(512) 

Traceback 
(...) 
    description = 'GORGEOUS ORANGE SS!!', 
(...) 

benim modelin açıklama alanına 512 max karakter uzunluğu:

description = models.CharField(max_length=512,default='') 

Ama var bir alıyorum

car = CarItem.objects.create(
    user = motor_trend, 
    name = 'Camaro 2010', 
    category = cars, 
    condition = 'Used', 
    price = '28,547.00', 
    production_year = '2010', 
    color_interior = 'Black', 
    color_exterior = 'Inferno Orange Metallic', 
    reference = 'PRC17288', 
    location_of_creation = 'Undisclosed', 
    location_current = 'Columbus, OH, USA', 
    description = 'GORGEOUS ORANGE SS!!', 
) 
car.save() 

Bu dizenin 512 bayttan fazla olması mümkün değildir.

Bu hata hakkında, kodlamaya atıfta bulunan önceki yayınları okudum. Durum böyle görünmüyor.

Webfaction'da barındırıldım. Utf-8 kodlamasıyla bir veritabanı oluşturdum ve syncdb'yi kullanmaya başladım. Syncdb mükemmel çalıştı ama şimdi bu nesne ekleme başarısız oluyor.

Birisi biraz girdi verebilir mi? Teşekkür ederim. Bazı Django documentation kazma sonra

cevap

4

: Eğer benzersiz kullanıyorsanız

Karakter alanları VARCHAR sütun türleri ile saklanır

tüm alanlar 255 karakter sınırlı onların MAX_LENGTH var = Doğru Bu alan için .

Vurgulamak benim. Alan için unique=True var mı? Bu bir Django kısıtlamasıdır, PostgreSQL sakıncası olmaz. text veri tipine geçmek isteyebilirsiniz. Django paritede TextField.


Eski fikirler:

user bir reserved word in PostgreSQL ve herhangi bir SQL standarttır. Sütun adı olarak kullanmayın.

Sen Eğer çift tırnak içinde kapalı ise, onu kullanın ama uzakta o çılgınlık uzak kalmak olabilir. Sadece tanımlayıcılar için ayrılmış kelimeleri kullanmayın. Hiç. Ayrıca

...
user = motor_trend, 
name = 'Camaro 2010', 
category = cars, 

motor_trend ve cars diğer değerler gibi kote olmayan niçin belirli bir neden

? Yabancı anahtarlar, @Ignacio gibi yorum yaptı?

+0

Yabancı anahtarlar. Ve Django'nun ORM'si muhtemelen alan adlarını doğru bir şekilde aktarıyor. –

+0

Evet, daha önce tanımlanan Django değişkenleri, bazı dizeler, diğer nesneler. Bununla birlikte, bu açıklama sorunu ile ilgili mi? Açıklama problemine neden olan bir kullanıcı alanım var mı? –

+0

@VascoPatricio: Soruna açık bir bağlantı yok, no. Belli bir şey olmadığı için şüpheli bir şey için avlanıyordum. El kitabına girdim ve şimdi bir şey bulduğumu düşünüyorum. Cevabımı değiştirdim, bir bak. –

İlgili konular