Djangoでは、いくつかのモデルをmodels.py
に追加しました。 manage.py makemigrations
の後、manage.py migrate
はこの例外を発生させました。
Django.db.utils.OperationalError: no such table: auth_test_usertranslatorprofile
だから私はすべての古い移行を削除し、makemigrations
とmigrate
を再度実行しました。
残念ながら、User customer profiles
of User translator profiles
をクリックしようとすると例外が発生するため、役に立たなかったことがわかりました。
環境:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/auth_test/usertranslatorprofile/
Django Version: 1.8.7
Python Version: 2.7.10
Installed Applications:
('Django.contrib.admin',
'Django.contrib.auth',
'Django.contrib.contenttypes',
'Django.contrib.sessions',
'Django.contrib.messages',
'Django.contrib.staticfiles',
'auth_test')
Installed Middleware:
('Django.contrib.sessions.middleware.SessionMiddleware',
'Django.middleware.common.CommonMiddleware',
'Django.middleware.csrf.CsrfViewMiddleware',
'Django.contrib.auth.middleware.AuthenticationMiddleware',
'Django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'Django.contrib.messages.middleware.MessageMiddleware',
'Django.middleware.clickjacking.XFrameOptionsMiddleware',
'Django.middleware.security.SecurityMiddleware')
Traceback:
File "C:\Python27\lib\site-packages\Django\core\handlers\base.py" in get_response
132. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python27\lib\site-packages\Django\contrib\admin\options.py" in wrapper
618. return self.admin_site.admin_view(view)(*args, **kwargs)
File "C:\Python27\lib\site-packages\Django\utils\decorators.py" in _wrapped_view
110. response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\Django\views\decorators\cache.py" in _wrapped_view_func
57. response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\Django\contrib\admin\sites.py" in inner
233. return view(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\Django\utils\decorators.py" in _wrapper
34. return bound_func(*args, **kwargs)
File "C:\Python27\lib\site-packages\Django\utils\decorators.py" in _wrapped_view
110. response = view_func(request, *args, **kwargs)
File "C:\Python27\lib\site-packages\Django\utils\decorators.py" in bound_func
30. return func.__get__(self, type(self))(*args2, **kwargs2)
File "C:\Python27\lib\site-packages\Django\contrib\admin\options.py" in changelist_view
1550. self.list_max_show_all, self.list_editable, self)
File "C:\Python27\lib\site-packages\Django\contrib\admin\views\main.py" in __init__
82. self.get_results(request)
File "C:\Python27\lib\site-packages\Django\contrib\admin\views\main.py" in get_results
177. result_count = paginator.count
File "C:\Python27\lib\site-packages\Django\core\paginator.py" in _get_count
72. self._count = self.object_list.count()
File "C:\Python27\lib\site-packages\Django\db\models\query.py" in count
318. return self.query.get_count(using=self.db)
File "C:\Python27\lib\site-packages\Django\db\models\sql\query.py" in get_count
466. number = obj.get_aggregation(using, ['__count'])['__count']
File "C:\Python27\lib\site-packages\Django\db\models\sql\query.py" in get_aggregation
447. result = compiler.execute_sql(SINGLE)
File "C:\Python27\lib\site-packages\Django\db\models\sql\compiler.py" in execute_sql
840. cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\Django\db\backends\utils.py" in execute
79. return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python27\lib\site-packages\Django\db\backends\utils.py" in execute
64. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\Django\db\utils.py" in __exit__
98. six.reraise(dj_exc_type, dj_exc_value, traceback)
File "C:\Python27\lib\site-packages\Django\db\backends\utils.py" in execute
64. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\Django\db\backends\sqlite3\base.py" in execute
318. return Database.Cursor.execute(self, query, params)
Exception Type: OperationalError at /admin/auth_test/usertranslatorprofile/
Exception Value: no such table: auth_test_usertranslatorprofile
ファイルを添付しています:
MODELS.PY:
from Django.db import models
from Django.contrib.auth.models import User
class Language(models.Model):
shortcut = models.CharField(max_length=6)
name = models.CharField(max_length=50)
price_per_sign = models.FloatField()
class UserTranslatorProfile(models.Model):
user = models.OneToOneField(User)
languages = models.ManyToManyField(Language)
price_per_Word = models.FloatField()
class UserCustomerProfile(models.Model):
user = models.OneToOneField(User)
ADMIN.PY:
from Django import forms
from .models import Language
from Django.contrib.auth.models import User
from Django.contrib.auth.forms import UserCreationForm
class FreelancerRegistrationForm(forms.Form):
language = forms.ModelChoiceField(queryset=Language.objects.all().order_by('shortcut'))
問題がどこにあるか知っていますか?ありがとう
私はこれらの手順で同じ問題を解決しました:
db.sqlite3
)を削除します__pycache__
フォルダからすべてを削除しますmigrations
および__pycache__
ディレクトリーをクリアします上記のファイルをすべてクリアしたことが確実な場合は、次を実行します。
python manage.py makemigrations
python manage.py migrate
これがお役に立てば幸いです。
別のケースでは、no such tableエラーが発生する場合があります。 views.pyまたは同様のものが、インポート時にDBにアクセスしようとするコードを実行する場合、つまりviews.pyをインポートすると副作用が発生する場合、ゼロからの開始は機能しません。
これは、コードが既存のDBで動作していたときに発生し、現在はDBなしで開始しようとしています。副作用なしでインポートできるように、views.pyを変更するだけです。設計を修正したくない場合は、次のようにします。
from Django.db.utils import OperationalError
format_list = [('', '(all)')]
geom_type_list = [('', '(all)')]
try:
format_list.extend([(i[0],i[0])
for i in Format.objects.values_list('name')])
geom_type_list.extend([(i[0],i[0])
for i in Geom_type.objects.values_list('name')])
except OperationalError:
pass # happens when db doesn't exist yet, views.py should be
# importable without this side effect
Terry_brownの答えに加えて、これが私の問題の原因です。別のモデルへのForeignKeyを使用したカスタムユーザーモデルがありました。そして、デフォルトをDBの最初のオブジェクトに設定します。データベースにデータがあるときに機能しました。しかし、最初から始めたときは、インポートするとすぐに実行されたため、機能しませんでした(したがって、移行も行われませんでした)。
class User(AbstractBaseUser, PermissionsMixin):
subscription_plan = models.ForeignKey(SubscriptionPlan, default=SubscriptionPlan.objects.first().id)
default
(コメントアウト)を犠牲にしなければなりませんでした。
更新:より良い解決策は、データベースに初期移行またはフィクスチャを事前に設定することです。
以下のコマンドを実行します。一度この問題を解決します
manage.py migrate --run-syncdb
それを解決するために私はこれをしました(Ubuntuでは、Windows用のコマンドを適応させる必要があります):
1。すべての移行ファイルを削除します
find . -path "*/migrations/*.py" -not -name "__init__.py" -delete
find . -path "*/migrations/*.pyc" -delete
2。 db.sqlite3を削除します
rm db.sqlite3
3。移行を作成して実行します:
python manage.py makemigrations
python manage.py migrate
4。データベースを同期します:
manage.py migrate --run-syncdb
データベースを削除する必要があるため少し苦労しますが、テストシステムには問題ありません。この一般的に優れたリソースから最終ステップを除いてすべてを手に入れました: https://simpleisbetterthancomplex.com/tutorial/2016/07/26/how-to-reset-migrations.html
時間切れかもしれませんが... Django 1.11のインストールを他のディレクトリに「クローン」して、最初に移行を管理しようとすると、同じ問題が発生します。
私は次の方法で問題を解決します:
Django-admin.py startproject app_name
初期移行は、移行を管理し、移行を管理します
スーパーユーザーをセットアップします。
createsuperuserを管理します
メインディレクトリのurls.pyとsettings.pyを除くすべてのファイルとディレクトリ(Djangoアプリケーション)をコピーします
すべてのアプリをINSTALLED_APPSに追加しました
移行の管理、移行の管理
ソースDjangoアプリケーションディレクトリからsettings.pyおよびurls.pyをコピーしました
それはエラーではなく、すべて正常に動作しています。
ペトル
他の誰かがこの問題を抱えていて、受け入れられた解決策が機能しない場合は、dbパスを見てください。dbパスは絶対パスである必要があります'NAME': '/pathto-db/default.db',