添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
细心的沙滩裤  ·  Python标准库--inspect - ...·  2 小时前    · 
逆袭的烈马  ·  python的inspect模块 - ...·  2 小时前    · 
痴情的雪糕  ·  inspect – Inspect ...·  2 小时前    · 
骑白马的山羊  ·  Python reflection: ...·  2 小时前    · 
害羞的饭卡  ·  python ...·  1小时前    · 
朝气蓬勃的李子  ·  中共中央 ...·  9 月前    · 
温柔的炒粉  ·  坐标坪山 | ...·  11 月前    · 
Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I have read a lot of other posts here on stackoverflow and google but I could not find a solution.

It all started when I changed the model from a CharField to a ForeignKey. The error I recieve is:

Operations to perform:
  Synchronize unmigrated apps: gis, staticfiles, crispy_forms, geoposition, messages
  Apply all migrations: venues, images, amenities, cities_light, registration, auth, admin, sites, sessions, contenttypes, easy_thumbnails, newsletter
Synchronizing apps without migrations:
  Creating tables...
    Running deferred SQL...
  Installing custom SQL...
Running migrations:
  Rendering model states... DONE
  Applying venues.0016_auto_20160514_2141...Traceback (most recent call last):
  File "/Users/iam-tony/.envs/venuepark/lib/python3.4/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
psycopg2.IntegrityError: column "venue_city" contains null values

My model is as follows:

class Venue(models.Model):
    venue_city = models.ForeignKey(City, null=True,)
    venue_country=models.ForeignKey(Country, null=True)

venue_country did not exist before so that migration happened successfully. But venue_city was a CharField.

I made some changes to my migration file so that it would execute the sql as follows:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
    dependencies = [
        ('venues', '0011_venue_map_activation'),
    migrations.RunSQL(''' ALTER TABLE venues_venue ALTER venue_city TYPE integer USING  venue_city::integer '''),
    migrations.RunSQL(''' ALTER TABLE venues_venue ALTER venue_city RENAME COLUMN venue_city TO venue_city_id '''),
    migrations.RunSQL(''' ALTER TABLE venues_venue ADD CONSTRAINT venues_venus_somefk FOREIGN KEY (venue_city_id) REFERENCES  cities_light (id) DEFERRABLE INITIALLY DEFERRED'''),

Thanks in advance!

UPDATE: my new migration file:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
    dependencies = [
        ('cities_light', '0006_compensate_for_0003_bytestring_bug'),
        ('venues', '0024_remove_venue_venue_city'),
    operations = [
        migrations.AddField(
            model_name='venue',
            name='venue_city',
            field=models.ForeignKey(null=True, to='cities_light.City'),
                I think, you added null=True after created migration file. Because venue_city  is not a nullable field in your migration file
– Anoop
                May 15, 2016 at 19:23

Looks like you added null=True after created migration file. Because venue_city is not a nullable field in your migration file

Follow these steps.

1) Drop venue_city & venue_country from your local table
3) Delete all the migration files you created for these `CharField to a ForeignKey` change
4) execute `python manage.py makemigrations`
5) execute 'python manage.py migrate'

It should work

Just as a quick comment, if you are using something like AWS Elastic Beanstalk it could be easier to simply correct the models, delete the erroneous migrations and makemigrations again. – reojased Jan 23, 2020 at 5:35 :-( my help ends there.But because migration files are Dependant with previous files.Try inspecting them because the error is a result of conflicting commits to the database – 0n10n_ May 15, 2016 at 20:10
  • add null=True, blank=True in Venue model class eg: venue_city = models.ForeignKey(City, null=True, blank=True)
  • delete venues.0016_auto_20160514_2141 migration file from migrations folder in your app
  • then run python manage.py makemigrations
  • then run python manage.py migrate
  • no need to drop table or remove migrations from migration tables

  • First delete last migration that face problem
  • Then add like venue_city = models.CharField(blank=True, null=True)
  • Finally use makemigrations and migrate command
  • As the error says, you have a null value in the "venue_city" column.

    It seems at the time of defining your model you had not included "null=True".

    So it returns null because there is nothing in your 'venue_city" variable. Consider deleting the last migration file and perform another migration using python manage.py makemigrations and python manage.py migrate commands.

    Thanks for contributing an answer to Stack Overflow!

    • Please be sure to answer the question. Provide details and share your research!

    But avoid

    • Asking for help, clarification, or responding to other answers.
    • Making statements based on opinion; back them up with references or personal experience.

    To learn more, see our tips on writing great answers.