python - 无法从 Heroku 上的 Django 连接到 SQL Server
问题描述
我的网站只会从 SQL 服务器加载现有表(品牌)并显示到索引页面。我可以在我的机器上毫无问题地运行该网站,但是当我将项目部署到 Heroku 时,该表似乎不存在。
(如果网站未连接到 SQL Server,则部署工作正常。)
这些是我的设置:
运行时.txt
python-3.7.0
档案
web: gunicorn project_heroku.wsgi --log-file -
设置.py
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': DB_DEFAULT_NAME,
'USER': DB_USER,
'PASSWORD': DB_PASSWORD,
'HOST': DB_HOST,
'PORT': '',
'OPTIONS': {
'driver': 'ODBC Driver 17 for SQL Server',
'unicode_results': True,
}
}
}
模型.py
class Brand(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=60)
class Meta:
managed = False
db_table = 'brand'
视图.py
from .models import Brand
def index(request):
brand = list(Brand.objects.all().values())
context = {
'brand': brand
}
return render(request, 'index.html', context)
我在 Heroku 上添加了 2 个构建包
在我的 Aptfile
unixodbc
unixodbc-dev
python-pyodbc
libsqliteodbc
在我的 requirements.txt
django
pyodbc
gunicorn
django-heroku
django-pyodbc-azure
包已经构建成功,但是网站给出了这个错误
ProgrammingError at /
relation "brand" does not exist
LINE 1: SELECT "brand"."id", "brand"."name" FROM "brand"
请帮忙!谢谢!!
==============================
更新:
我发现 Heroku 会自动创建并附加我不想要的 postgresql。因此,我删除了 postgresql 并将错误更改为 Can't open lib 'ODBC Driver 17 for SQL Server' : file not found。:( 我想我必须对 DATABASE_URL 配置做点什么。
解决方案
推荐阅读
- linux - Shell 脚本:从一堆系统中获取 SSH 横幅
- python-3.x - 如何使用python返回for循环计数的结果?
- go - 如何从父进程打印交互式子进程的输出?
- java - 如何在启动时将我的 java 应用程序(作为 .exe)传递给文档的路径?
- python - 如何从字符串中删除重复的字符?
- javascript - 从 Angular 中的 api 导入样式
- java - 如何从有序的一维列表中获取二维坐标(x,y) - 0,1,2,3,4,5,6.... 具有给定的宽度和高度?
- java - 将对象添加到两个类之间的 ArrayList
- python - os.path.isdir() 和 os.path.isfile() 都在脚本中返回 False,但在 Python 控制台中返回 True(就像他们应该的那样)
- c# - EF 核心 - 为没有连接字符串的数据库和另一个类库创建迁移