アプリに関連するテーブルをいくつか削除しました。そして、再びsyncdbコマンドを試しました
python manage.py syncdb
次のようなエラーが表示されます
Django.db.utils.ProgrammingError: (1146, "Table 'someapp.feed' doesn't exist")
models.py
class feed(models.Model):
user = models.ForeignKey(User,null=True,blank=True)
feed_text = models.CharField(max_length=2000)
date = models.CharField(max_length=30)
upvote = models.IntegerField(default=0)
downvote = models.IntegerField(default=0)
def __str__(self):
return feed.content
そのアプリのテーブルを取得するにはどうすればよいですか?
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
まだ問題を抱えている可能性のある人(私のように)については、これを試してください:
メインアプリのurls.py
にあるすべてのURLをコメントアウトします
次に、移行を実行します。
$ ./manage.py makemigrations
$ ./manage.py migrate
この問題は、()
を削除することで軽減されました
solved_time = models.DateTimeField('solved time', default=timezone.now())
に
solved_time = models.DateTimeField('solved time', default=timezone.now)
上記の解決策のどれも私にとってはうまくいきませんでした、私は最終的に解決しました
Sudo systemctl stop mysql.service
Sudo apt-get purge mysql-server
Sudo apt-get install mysql-server
Sudo systemctl stop mysql.service
私の場合、プルしたコードには managed= False があり、テーブルをDjangoで管理したかったのです。
しかし、移行を行ったときにカスタムテーブルが検出されなかったか、app_name.Table_nameが存在しないというエラーが表示されていました
私は次を試しました:
PS:このソリューションは、バックアップが存在するか、データが重要でないか、テーブルの作成を開始したばかりの場合にのみ実行可能です。mysqlをパージするとデータが失われます
この問題は、本番と開発で同じデータベース構造で遊んでいたときに発生しました。テーブルをドロップして再作成すると問題が解決する可能性がありますが、データベース自体をチェックして、モデルが実際に正しいかどうかを確認する価値があります。私自身は、テーブル名をすべて小文字にして開発データベースを誤って作成しましたが、本番環境では、テーブルの最初の文字が大文字になっています。実稼働データベースでpython manage.py inspectdbコマンドを使用し、それをモデルと比較し、モデルでは「テスト」ではなくテーブル「テスト」にデータを挿入しようとしていることがわかりました例えば、将来あなたの何人かを助けることを願っています。