簡體   English   中英

Django 4.0.3 和 mssql-django 1.1.2 將無法連接到 SQL Server Express 2019

[英]Django 4.0.3 and mssql-django 1.1.2 will not connect to SQL Server Express 2019

我一直在學習 mssql-django 的本教程https://docs.microsoft.com/en-us/samples/azure-samples/mssql-django-samples/mssql-django-samples/

我的設置是 Django 4.0.3,mssql-django 1.1.2 將無法連接到 Windows 10 上的 SQL Server Express 2019,而 SQL Server Express 2019 在本地運行。

我已經在 GitHub 和 Stack Overflow 上搜索了 mssql-django 配置的示例,但發現的並不多。

我不確定我做錯了什么。

我一直在嘗試的主要事情是押注 NAME、USER 或 HOST 參數不正確,因為其他參數似乎是正確的。

  • NAME應該是: avxdbmxlaptop\\avxdb還是其他?
  • USER應該是: pyadmin@mxlaptop還是只是pyadmin
  • HOST應該是: mxlaptop\SQLEXPRESSmxlaptop\ss2019mxlaptop還是127.0.0.1
DATABASES = {
    'default': {
        "ENGINE": "mssql",
        "NAME": "avxdb",
        "USER": "pyadmin@mxlaptop",
        "PASSWORD": "Python",
        "HOST": "mxlaptop\SQLEXPRESS",
        "PORT": "1433",
        "OPTIONS": {"driver": "ODBC Driver 17 for SQL Server", 
        },
    }
}

編輯:對不起,我沒有發布錯誤:

Traceback (most recent call last):
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 244, in ensure_connection
    self.connect()
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 225, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\mssql\base.py", line 329, in get_new_connection
    conn = Database.connect(connstr,
pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it.\r\n (10061) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (10061)')

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "C:\Users\metamuas\source\vscode\avx\avx_backend\manage.py", line 22, in <module>
    main()
  File "C:\Users\metamuas\source\vscode\avx\avx_backend\manage.py", line 18, in main
    execute_from_command_line(sys.argv)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\core\management\__init__.py", line 446, in execute_from_command_line
    utility.execute()
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\core\management\__init__.py", line 440, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\core\management\base.py", line 414, in run_from_argv
    self.execute(*args, **cmd_options)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\core\management\base.py", line 460, in execute
    output = self.handle(*args, **options)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\core\management\commands\inspectdb.py", line 46, in handle
    for line in self.handle_inspection(options):
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\core\management\commands\inspectdb.py", line 62, in handle_inspection
    with connection.cursor() as cursor:
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 284, in cursor
    return self._cursor()
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\mssql\base.py", line 230, in _cursor
    conn = super()._cursor()
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 260, in _cursor
    self.ensure_connection()
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 243, in ensure_connection
    with self.wrap_database_errors:
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\utils.py", line 91, in __exit__
    raise dj_exc_value.with_traceback(traceback) from exc_value
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 244, in ensure_connection
    self.connect()
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\utils\asyncio.py", line 26, in inner
    return func(*args, **kwargs)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\django\db\backends\base\base.py", line 225, in connect
    self.connection = self.get_new_connection(conn_params)
  File "C:\Users\metamuas\.virtualenvs\avx-BMkvCBKN\lib\site-packages\mssql\base.py", line 329, in get_new_connection
    conn = Database.connect(connstr,
django.db.utils.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]TCP Provider: No connection could be made because the target machine actively refused it.\r\n (10061) (SQLDriverConnect); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]Invalid connection string attribute (0); [08001] [Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online. (10061)')

我有一個普通的 Python 腳本,可以通過pyodbc連接到數據庫:

connection = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};'
                                'SERVER=mxlaptop;'
                                'DATABASE=avxdb;'
                                'UID=pyadmin;'
                                'PWD=Python;')

所以事實證明,必須通過 SQL Server 配置啟用 TCP/IP。

此外,這是我發現的正確連接設置:

DATABASES = {
    'default': {
        "ENGINE": "mssql",
        "NAME": "avxdb",
        "USER": "pyadmin",
        "PASSWORD": "Python",
        "HOST": "mxlaptop",
        "PORT": "1433",
        "OPTIONS": {"driver": "ODBC Driver 17 for SQL Server", 
        },
    }
}

所以我有錯誤的USER和錯誤的HOST

TCP/IP 必須通過 SQL Server 配置啟用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM