首页 > 解决方案 > 无法从 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 个构建包

  1. https://github.com/heroku/heroku-buildpack-apt
  2. Heroku/蟒蛇

在我的 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 配置做点什么。

标签: pythonsql-serverdjangoherokudjango-pyodbc-azure

解决方案


推荐阅读