6

I'm trying to run a Django (3.0) app on Azure App Service in Linux, connected to an Azure SQL Database. In my staging App Service instance, this works perfectly, however, when I set up my production instance on a different Azure account, my Django app can no longer access the database.

When I hardcoded the ODBC Driver 17 into database settings, I got this error in my Oryx build logs:

pyodbc.Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'ODBC Driver 17 for SQL Server' : file not found (0) (SQLDriverConnect)")

When I switched to the non-hardcoded version suggested here, I got this error:

    'driver': sorted(pyodbc.drivers()).pop(),
IndexError: pop from empty list

How does one go about installing an ODBC Driver on Azure App Service?

EDIT: I am not using the Docker deploy option. I am deploying source code directly from Github.

  • Hi. Thanks for that -- unfortunately I'm not using the Docker deploy option. I'm using the source code deploy option, so I can't replicate those instructions. – Mitchell Palmer Nov 02 '20 at 09:21
  • Well, the simple answer is that your don't have to install the ODBC drivers because all the packages are already installed. Have you checked and compared all the app service configuration between the working and non-working instance? – ChrisWue Nov 04 '20 at 09:20

1 Answers1

1

I have tested it and it works for me.

Open ssh to you web app and run the below command:-

enter image description here

  1. apt-get update
  1. apt-get install g++
  1. apt-get install unixodbc-dev
  1. pip install pyodbc

enter image description here

Then we can use the privacy mode, or visit the website after clearing the cache. You can try to refresh a few more times and you will find that the website is back to normal.

Previous I said you can try to use venv, after I tested, I found it doesn't need to use it. Follow my step to run the command, you webapp will be ok.

enter image description here

Jason Pan
  • 15,263
  • 1
  • 14
  • 29