Django : Table doesn't exist

前端 未结 8 1607
再見小時候
再見小時候 2020-11-28 07:45

I dropped some table related to an app. and again tried the syncdb command

python manage.py syncdb

It shows error like

dja         


        
相关标签:
8条回答
  • 2020-11-28 07:58

    I have to face same issue and there are a couple of approaches, but the one I think is the most probable one.

    Maybe you are loading views or queries to database but you haven´t granted enough time for Django to migrate the models to DB. That's why the "table doesn't exist".

    Make sure you use this sort of initialization in you view's code:

    Class RegisterForm(forms.Form):

      def __init__(self, *args, **kwargs):
        super(RegisterForm, self).__init__(*args, **kwargs)
    

    A second approach is you clean previous migrations, delete the database and start over the migration process.

    0 讨论(0)
  • 2020-11-28 08:00
    1. drop tables (you already did),
    2. comment-out the model in model.py,
    3. and ..

    if django version >= 1.7:

    python manage.py makemigrations
    python manage.py migrate --fake
    

    else

    python manage.py schemamigration someapp --auto
    python manage.py migrate someapp --fake
    
    1. comment-in your model in models.py
    2. go to step 3. BUT this time without --fake
    0 讨论(0)
  • 2020-11-28 08:11

    none of the above solutions worked for me, I finally solved by

    sudo systemctl stop mysql.service
    
    sudo apt-get purge mysql-server
    
    sudo apt-get install mysql-server
    
    sudo systemctl stop mysql.service
    

    In my case the code that I pulled had managed = False and I wanted the tables to be maintained by Django.

    But when I did makemigrations the custom tables were not being detected or I was getting the error that the app_name.Table_name does not exist

    I tried the following:

    1. delete all the migration files inside the migrations folder (except init.py file) and then makemigrations then finally migrate
    2. above 2 answers
    3. this

    PS: This solution is only feasible if backup is present or data is not important or you are just started creating the tables, as purging mysql will lead to loss of data

    0 讨论(0)
  • 2020-11-28 08:15

    I had this issue where I was playing with same database structure in production vs development. While dropping and recreating tables will probably resolve the issue, its worth checking your database itself and see if the model is actually correct. For myself I created the development database incorrectly with the table names all in lowercase while in production the first letter of tables were capitalized. I used the python manage.py inspectdb command on production db, and compared it to the model and realized that in the model it was trying to insert data to table 'test' instead of 'Test' for example. Hope that helps some of you in future.

    0 讨论(0)
  • 2020-11-28 08:16

    I tried all of the above tricks and never worked for me. I commented on all imports and URLs that called a particular Table

    0 讨论(0)
  • 2020-11-28 08:17

    What solved my problem in situation when manage.py setmigration and then migrate to the SQL database is not working properly did is following:

    1. Run command : python manage.py migrate --fake MyApp zero
    2. After that: python manage.py migrate MyApp

    And the problem that rises with connections.py and and after running correctly the migration command is solved! At least for me.

    I'm using Python (3.x), MySQL DB, Django (3.x), and I was in situation when I needed after some time of successfully creating tables in my database, that some error regarding connections.py raises. But, above commands helped. I hope they will help all those who are having these type of problems.

    0 讨论(0)
提交回复
热议问题