2010-09-14 10 views
10

Canlı sunucumdaki Djanog 1.2.1'deki bir JSON fikstürüne veri dökmeyi denediğimde bir hata alıyorum. Canlı sunucuda MySQL Server sürüm 5.0.77 çalışıyor ve phpMyAdmin arayüzünü kullanarak tablolarıma çok miktarda veri aktardım. Web sitesi iyi çalışıyor ve Django yöneticisi normal yanıt veriyor. Ben tabloları karşılık gelen uygulamanın verilerini denemek ve aslında dökümü Ama ne zaman bu hatayı alıyorum:Django'da, veri dökmeye çalışırken "Hata: veritabanını serileştiremedi" duruma nasıl geçilir?

$ python manage.py dumpdata --indent=2 gigs > fixtures/gigs_100914.json 
/usr/local/lib/python2.6/site-packages/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated 
    from sets import ImmutableSet 
Error: Unable to serialize database: Location matching query does not exist. 
Ben modellerinde böyle görünüyor gelen dökümü çalışıyorum 'konser' için

Benim Django modeli .py dosyası:

Django veriyle gayet iyi. Site iyi çalışıyor ve ilişkiler kesinlikle iyi görünüyor. Bir çalışma komutu SQL Django hangisini kullandığına almak Ne zaman:

$ python manage.py sql gigs 
/usr/local/lib/python2.6/site-packages/MySQLdb/__init__.py:34: DeprecationWarning: the sets module is deprecated 
    from sets import ImmutableSet 
BEGIN;CREATE TABLE `gigs_location` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `name` varchar(120) 
) 
; 
CREATE TABLE `gigs_venue` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `name` varchar(120), 
    `contact` varchar(250), 
    `url` varchar(60) 
) 
; 
CREATE TABLE `gigs_gig` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `date` date, 
    `details` varchar(250), 
    `location_id` integer NOT NULL, 
    `venue_id` integer NOT NULL 
) 
; 
ALTER TABLE `gigs_gig` ADD CONSTRAINT `venue_id_refs_id_3d901b6d` FOREIGN KEY (`venue_id`) REFERENCES `gigs_venue` (`id`); 
ALTER TABLE `gigs_gig` ADD CONSTRAINT `location_id_refs_id_2f8d7a0` FOREIGN KEY (`location_id`) REFERENCES `gigs_location` (`id`);COMMIT; 

Üçlü emin tüm ilişkileri yapmak geçirdi verileri kontrol ettim ve veri aktardıktan sonra ok. Ama hala bu hatayı alıyorum, üç gün sonra ... Bu konuda ne yapacağım konusunda sıkışıp kaldım. "DeprecationWarning" in burada bir sorun olacağını düşünemiyorum. Bu verileri JSON olarak geri göndermem gerekiyor.

Yardımlarınız için çok teşekkürler.

+0

Alttaki hataları görmek için --traceback ile çalıştırın –

+0

Hatası bulamadınız mı? 'Inspectdb' ile elde edilen bir grup modeli dökmeye çalışırken benzer bir durumda koştum ... Ben 'DoesNotExists' get alamıyorum (daha yeni sürümü nedeniyle olabilir). Ama django var olan bir coulmn aramak için başarısız ... – tutuca

cevap

10

this benzeri bir şey olabilir. ile

Run it:

python manage.py dumpdata --indent=2 -v 2 --traceback gigs 

yatan hatayı görmek için.

3

Bir keresinde, hata mesajının sizinkiyle büyüleyici hale geldiği benzer bir sorunla karşılaştım. Nedeni sunucumda bellek eksikliği vardı. Json'da döküntüler üretmenin oldukça pahalı olduğu anlaşılıyor. Sadece 60meg bellek (djangohosting.ch) vardı ve mysql dökümü sadece 1meg olan bir mysql DB için bir dökümü almak için yeterli değildi.

Birincisinde, manage.py dumpdata çalıştırırken, ikinci bir komut satırında en üstteki komutu kullanarak python işlemini 60meg limitine çarptırarak izledim.

Çözümüm: mysql dökümü alın ve sonra json dökümünü oluşturmadan önce masaüstü bilgisayarım üzerine yükleyin. Yani, yedekleme amaçlı olarak, mysql dökümleri yeterlidir. sözü

mysqldump -p [password] -u [username] [database_name] > [dump_file_name].sql 

, senin sorunun tamamen farklı olabilir:

komut

mysql dökümü takip ediyor olsun. Konum tablonuza yabancı bir anahtar içeren her tabloya bakmalı ve daha önce silinmiş bir konuma işaret eden bir alan olup olmadığını kontrol etmelisiniz. Ne yazık ki MySQL Referans bütünlüğünü korumakta çok kötü ve buna güvenemiyorsunuz.

İlgili konular