2010-01-27 9 views
2

Je viens de migrer mon environnement de développement d'Ubuntu Linux vers Mac OSX Snow Leopard. Tout cela fonctionnait sous Linux. Sur les deux, j'ai utilisé MySQL pour db de Django.Django réinitialise pas les tables

La fonction de réinitialisation de Django n'émet pas de commandes de suppression pour tous les modèles de mon application. Voici mon models.py (avec les champs du Forum et objets utilisateur supprimés par souci de concision):

from django.db import models 

class Forum(models.Model): 
    ... 

class User(models.Model): 
    ... 

class Message(models.Model): 
    date = models.DateTimeField() 
    content_file = models.CharField(max_length=48) 
    summary_file = models.CharField(max_length=48) 
    user = models.ForeignKey(User)  
    thread = models.ForeignKey('self', blank=True, null=True) 
    lft = models.IntegerField(default=1) 
    rgt = models.IntegerField(default=2) 

    def __unicode__(self): 
     return str(self.date) + '_' + unicode(self.user) 

class Message_forum(models.Model): 
    message = models.ForeignKey(Message) 
    forum = models.ForeignKey(Forum) 
    status = models.IntegerField() 
    position = models.IntegerField(blank=True, null=True) 

    def __unicode__(self): 
     return unicode(self.message) + '_' + unicode(self.forum) 

Voici la sortie de la commande SQL django:

BEGIN; 
CREATE TABLE `AO_forum` (
    ... 
) 
; 
CREATE TABLE `AO_user` (
    ... 
) 
; 
CREATE TABLE `AO_message` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `date` datetime NOT NULL, 
    `content_file` varchar(48) NOT NULL, 
    `summary_file` varchar(48) NOT NULL, 
    `user_id` integer NOT NULL, 
    `thread_id` integer, 
    `lft` integer NOT NULL, 
    `rgt` integer NOT NULL 
) 
; 
ALTER TABLE `AO_message` ADD CONSTRAINT `user_id_refs_id_12d253fe` FOREIGN KEY (`user_id`) REFERENCES `AO_user` (`id`); 
ALTER TABLE `AO_message` ADD CONSTRAINT `thread_id_refs_id_12262c89` FOREIGN KEY (`thread_id`) REFERENCES `AO_message` (`id`); 
CREATE TABLE `AO_message_forum` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `message_id` integer NOT NULL, 
    `forum_id` integer NOT NULL, 
    `status` integer NOT NULL, 
    `position` integer 
) 
; 
ALTER TABLE `AO_message_forum` ADD CONSTRAINT `message_id_refs_id_68762267` FOREIGN KEY (`message_id`) REFERENCES `AO_message` (`id`); 
ALTER TABLE `AO_message_forum` ADD CONSTRAINT `forum_id_refs_id_31073c3d` FOREIGN KEY (`forum_id`) REFERENCES `AO_forum` (`id`); 
COMMIT; 

Et voici la sortie du sqlreset de django commande:

BEGIN; 
DROP TABLE `AO_user`; 
DROP TABLE `AO_forum`; 
CREATE TABLE `AO_forum` (
    ... 
) 
; 
CREATE TABLE `AO_user` (
    ... 
) 
; 
CREATE TABLE `AO_message` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `date` datetime NOT NULL, 
    `content_file` varchar(48) NOT NULL, 
    `summary_file` varchar(48) NOT NULL, 
    `user_id` integer NOT NULL, 
    `thread_id` integer, 
    `lft` integer NOT NULL, 
    `rgt` integer NOT NULL 
) 
; 
ALTER TABLE `AO_message` ADD CONSTRAINT `user_id_refs_id_12d253fe` FOREIGN KEY (`user_id`) REFERENCES `AO_user` (`id`); 
ALTER TABLE `AO_message` ADD CONSTRAINT `thread_id_refs_id_12262c89` FOREIGN KEY (`thread_id`) REFERENCES `AO_message` (`id`); 
CREATE TABLE `AO_message_forum` (
    `id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY, 
    `message_id` integer NOT NULL, 
    `forum_id` integer NOT NULL, 
    `status` integer NOT NULL, 
    `position` integer 
) 
; 
ALTER TABLE `AO_message_forum` ADD CONSTRAINT `message_id_refs_id_68762267` FOREIGN KEY (`message_id`) REFERENCES `AO_message` (`id`); 
ALTER TABLE `AO_message_forum` ADD CONSTRAINT `forum_id_refs_id_31073c3d` FOREIGN KEY (`forum_id`) REFERENCES `AO_forum` (`id`); 
CREATE INDEX `AO_message_user_id` ON `AO_message` (`user_id`); 
CREATE INDEX `AO_message_thread_id` ON `AO_message` (`thread_id`); 
CREATE INDEX `AO_message_forum_message_id` ON `AO_message_forum` (`message_id`); 
CREATE INDEX `AO_message_forum_forum_id` ON `AO_message_forum` (`forum_id`); 
COMMIT; 

Seules les commandes de suppression pour Forum et Utilisateur sont générées. De plus, lorsque les tables sont créées, mon nom de projet Django ("AO") est ajouté en majuscule pour les tables forum et utilisateur, mais en minuscule pour les tables message et message_forum (qui sont celles sans drop commandes).

+0

avez-vous essayé au lieu de chasse? –

+0

J'ai essayé flush, qui après avoir lancé sqlreset produit des gouttes pour toutes les tables. Cependant, après avoir redémarré une fois, puis vérifié à nouveau sqlreset, il revient en arrière et n'a plus que des pertes pour Forum et Utilisateur. – Neil

Répondre

0

Utilisez cette

heroku pg:reset SHARED_DATABASE --confirm my_great_app 

Remplacez my_great_app avec votre nom d'application