首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django-south模式迁移导致数据丢失

django-south模式迁移导致数据丢失
EN

Stack Overflow用户
提问于 2013-05-20 11:54:40
回答 1查看 278关注 0票数 2

我在mysql数据库中有一个django模型,大约有500k个条目。我想在我的模型中添加另一个字段:

代码语言:javascript
复制
site = models.ForeignKey(Site, verbose_name=_('Site'),null=True,blank=True).

但是通过运行以下命令,我丢失了所有数据:

代码语言:javascript
复制
python manage.py schemamigration product --auto
python manage.py migrate product

生成的迁移脚本为:

代码语言:javascript
复制
class Migration(SchemaMigration):
    def forwards(self, orm):
        # Adding field 'Product.site'
        db.add_column('product_product', 'site',
                      self.gf('django.db.models.fields.related.ForeignKey')(to=orm['sites.Site'], null=True, blank=True),
                      keep_default=False)
    def backwards(self, orm):
        # Deleting field 'Product.site'
        db.delete_column('product_product', 'site_id')

迁移生成的sql为:

代码语言:javascript
复制
Running migrations for product:
 - Migrating forwards to 0016_auto__add_field_product_site.
 > product:0016_auto__add_field_product_site
   = SET FOREIGN_KEY_CHECKS=0; []
   = ALTER TABLE `product_product` ADD COLUMN `site_id` integer NULL; []
   - no dry run output for alter_column() due to dynamic DDL, sorry
   = ALTER TABLE `product_product` ADD CONSTRAINT `site_id_refs_id_10570b8a766fecf5` FOREIGN KEY (`site_id`) REFERENCES `django_site` (`id`); []
   = CREATE INDEX `product_product_6223029` ON `product_product` (`site_id`); []

来自'python manager.py migrate product--list‘的最新迁移历史是:

代码语言:javascript
复制
(*) 0011_auto__add_field_product_category_str
(*) 0012_auto__add_field_product_store_id
(*) 0013_auto__del_field_product_site__del_unique_product_sku_site__del_unique_
(*) 0014_auto__chg_field_product_short_description__chg_field_product_descripti
(*) 0015_auto__add_field_product_phase_tag
( ) 0016_auto__add_field_product_site

幸运的是,我有数据库备份。有没有一种方法可以在不丢失现有数据的情况下向模型中添加字段?

EN

回答 1

Stack Overflow用户

发布于 2013-05-22 05:42:36

对于500k的记录,这对于您的情况可能是不可能的,但为了其他可能访问此页面的人的利益,您可能希望尝试使用django-evolution https://code.google.com/p/django-evolution/而不是South。我用过这两个版本,发现虽然它的功能不是很全面,但它处理大多数迁移的时候要比South少得多。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16642344

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档