Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Django 1.7, django.db.utils.ProgrammingError / 6 сообщений из 6, страница 1 из 1
16.02.2015, 18:48
    #38881076
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Django 1.7, django.db.utils.ProgrammingError
Привет.

Миграция на sqlite проходит нормально. Когда изменяю БД на PostgreSQL, получаю такое сообщение:

Код: sql
1.
2.
    django.db.utils.ProgrammingError: ОШИБКА:  колонку "image_id" нельзя автоматически привести к типу integer
?????????:  Укажите выражение USING, чтобы выполнить преобразование.


Кто может помочь?
...
Рейтинг: 0 / 0
17.02.2015, 16:36
    #38882012
FishHook
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Django 1.7, django.db.utils.ProgrammingError
Vladimir aka jeltoesolnce,

а зачем накатывать миграцию при переходе на другую СУБД? Миграция нужна, когда у тебя проект уже работает, в базе накапливаются данные и вдруг ты изменил модель, в БД нужно применить эти изменения.
У тебя же в PostgreSQL ничего нет, соответственно история изменений тебе не нужна. Начинай миграции в ней заново.
...
Рейтинг: 0 / 0
20.02.2015, 10:42
    #38884739
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Django 1.7, django.db.utils.ProgrammingError
Сделал так. Но в Django 1.7 миграции у них идут изначально, и я переназначаю у исходной модели её поле. Для этого я создаю исходные таблицы инициируя приложение, затем меняю каталог с миграциями на другой, создаю новую модель с абстрактным классом типа:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
from django.db import models
from zinnia.models_bases import entry
from django.conf import settings

from django.utils.translation import ugettext_lazy as _
from photologue.models import Photo, Gallery

class EntryGallery(
          entry.CoreEntry,
          entry.ContentEntry,
          entry.DiscussionsEntry,
          entry.RelatedEntry,
          entry.ExcerptEntry,
          entry.FeaturedEntry,
          entry.AuthorsEntry,
          entry.CategoriesEntry,
          entry.TagsEntry,
          entry.LoginRequiredEntry,
          entry.PasswordRequiredEntry,
          entry.ContentTemplateEntry,
          entry.DetailTemplateEntry):

    image = models.ForeignKey(Photo,
                              blank=True,
                              null=True,
                              default=None)
    gallery = models.ForeignKey(Gallery,
                                blank=True,
                                null=True,
                                default=None)

    def __str__(self):
        return _('EntryGallery %s') % self.title

    class Meta(entry.CoreEntry.Meta):
        abstract = True


и начинаю накатывать новые миграции.

Так вот, когда sqlite - всё ок, когда то же самое пробую сделать на PostgreSQL - вылезает эта ошибка. Инструкция разраба здесь: http://docs.django-blog-zinnia.com/en/develop/how-to/extending_entry_model.html#considerations-about-the-database, вроде бы, всё делаю правильно. Как я понял, поле image_id изначально integer, и его СУБД меняет на другой? То есть, мне руками нужно просто что-то добавить в файл миграции, так что-ли?
...
Рейтинг: 0 / 0
20.02.2015, 11:15
    #38884770
Григорий Мойшевич
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Django 1.7, django.db.utils.ProgrammingError
Vladimir aka jeltoesolnceНо в Django 1.7 миграции у них идут изначально
ИМХО к версии 1.9 ими можно будет пользоваться, а пока старый добрый south
...
Рейтинг: 0 / 0
20.02.2015, 12:23
    #38884868
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Django 1.7, django.db.utils.ProgrammingError
Вот она, миграция:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
        ('photologue', '0007_auto_20150216_1808'),
        ('zinnia', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='entry',
            name='gallery',
            field=models.ForeignKey(default=None, blank=True, to='photologue.Gallery', null=True),
            preserve_default=True,
        ),
        migrations.AlterField(
            model_name='entry',
            name='image',
            field=models.ForeignKey(default=None, blank=True, to='photologue.Photo', null=True),
            preserve_default=True,
        ),
    ]



Изначально поле image символьное. Станет целочисленным. Мне нужно указать правило USING. Думаю, это USING 0. Как мне указать его в миграции?
...
Рейтинг: 0 / 0
20.02.2015, 12:42
    #38884885
Vladimir aka jeltoesolnce
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Django 1.7, django.db.utils.ProgrammingError
Сделал так:
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations


class Migration(migrations.Migration):

    dependencies = [
        ('photologue', '0007_auto_20150216_1808'),
        ('zinnia', '0001_initial'),
    ]

    operations = [
        migrations.AddField(
            model_name='entry',
            name='gallery',
            field=models.ForeignKey(default=None, blank=True, to='photologue.Gallery', null=True),
            preserve_default=True,
        ),
### добавил 
        migrations.RemoveField(
            model_name='entry',
            name='image',
        ),
###
### изменил AlterField на AddField
        migrations.AddField(
            model_name='entry',
            name='image',
            field=models.ForeignKey(default=None, blank=True, to='photologue.Photo', null=True),
            preserve_default=True,
        ),
    ]



Заработало.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Django 1.7, django.db.utils.ProgrammingError / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]