python - django 的 Azure SQL 数据库连接错误
问题描述
对于我的 Django Web 应用程序,我在运行时遇到了这个错误,python manage.py makemigrations
我用谷歌搜索这个问题无法找到解决方案。有人可以帮我找到解决这个问题的方法吗,我是初学者。
File "D:\Azure\newDjango\.venv\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "D:\Azure\newDjango\.venv\lib\site-packages\sql_server\pyodbc\base.py", line 546, in execute
return self.cursor.execute(sql, params)
django.db.utils.ProgrammingError: ('42S02', "[42S02] [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Invalid object name 'core_profilefeeditem'. (208) (SQLExecDirectW)")
我settings.py
的数据库连接文件
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': '<db-name>',
'USER': '<db-username>',
'PASSWORD': '<db-passord>',
'HOST': '<servername>.windows.net',
'PORT': '1433',
'OPTIONS': {
'driver': 'ODBC Driver 13 for SQL Server',
'MARS_Connection': 'True',
}
}
}
我的models.py
where 用户个人资料页面使用 rest_framwork 作为端点更新他们的图像以显示用户详细信息和图像
from django.db import models
from django.contrib.auth.models import AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.models import BaseUserManager
from django.conf import settings
import uuid
# Create your models here.
def image_name_change(instance, filename):
ext = filename.split('.')[-1]
filename = f'{uuid.uuid4()}.{ext}'
return filename
# Changing the default authentication
# ? https://docs.djangoproject.com/en/3.2/topics/auth/customizing/#auth-custom-user
class UserProfileManager(BaseUserManager):
"""Manager of User Profile"""
def create_user(self, email, name, password=None):
"""Create new user profile"""
if not email:
raise ValueError("User must have an email address")
# ? https://docs.djangoproject.com/en/3.2/topics/auth/customizing/#django.contrib.auth.models.BaseUserManager.normalize_email
# Normalizes email addresses by lowercasing the domain portion of the email address.
email = self.normalize_email(email)
user = self.model(email=email, name=name)
user.set_password(password) # to ensure encrypt password
user.save(using=self._db)
return user
def create_superuser(self, email, name, password):
"""Create and save new superuser with given details"""
user = self.create_user(email, name, password)
user.is_superuser = True
user.is_staff = True
user.save(using=self._db)
return user
class UserProfile(AbstractBaseUser, PermissionsMixin):
"""Databse model for users in the system"""
email = models.EmailField(
max_length=150, unique=True, null=False, blank=False)
name = models.CharField(max_length=150)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
objects = UserProfileManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name']
def get_full_name(self):
"""Retrieve full name of user"""
return self.name
def get_short_name(self):
"""Retrieve short name of user"""
return self.name
def __str__(self):
"""Return string reperesentation of our user"""
return self.email
class Meta:
# this used to change the model name that appear in admin page
verbose_name = "User Profile"
verbose_name_plural = "User Profiles Plural" # change model name in Admin panel
class ProfileFeedItem(models.Model):
"""Profile status update"""
user_profile = models.ForeignKey(
'UserProfile',
on_delete=models.CASCADE,
)
image = models.ImageField(upload_to=image_name_change)
created_on = models.DateTimeField(auto_now_add=True)
class ImageItem(models.Model):
user_id = models.ForeignKey('ProfileFeedItem', on_delete=models.DO_NOTHING)
image1 = models.ImageField(upload_to='media/')
解决方案
上述问题的答案是删除except文件migrations
夹下的所有文件,如果您已经使用本地数据库(),还删除文件夹。app_name
__init__.py
__pycache__
db.sqlite3
这里的主要问题是我们需要在创建任何模型之前迁移(python manage.py makemigrations
和)。python manage.py migrate
如果在这些文件( , )中创建了任何model
内部models.py
注释,则将这些行及其相关导入注释掉并应用迁移。views.py
serializers.py
然后取消注释这些行并应用迁移。
推荐阅读
- wordpress - 无法登录 wp-admin(卡在登录表单中)
- docker - How do I properly bring up a kubernetes cluster that was previously brought down?
- php - 404重定向到页面不起作用php / htaccess
- c++ - 如何使用“\”不作为命令,而只是作为字符串中的文本
- html - Chrome developer tools, what is capture full size screenshot?
- azure - Azure Application Gateway 502 Error due to NSG
- ionic-framework - 离子导出项目到apk
- c++ - 在 std::vector 中存储指针
- html - 使用 CSS 将图像块居中
- java - Maven 无法识别安装在 Ubuntu shell 上的 $JAVA_HOME jdk