我正在嘗試使用LocalDB實例設置Python項目。由於業務限制,我被綁定到MS SQL Server 2014後端以便與Django 1.8一起使用,並且我試圖用pyodbc驅動程序連接到它。我想用LocalDB實例代替SQL服務器進行開發,但我遇到了一些問題。我得到了以下設置的連接。Django + pyodbc + MS LocalDB ghost實例
Django的設置:
DATABASES = {
'default': {
'ENGINE': 'sql_server.pyodbc',
'NAME': 'my_db',
'HOST': '(localdb)\\hands-on',
'Trusted_Connection': 'yes',
'PORT': '',
'OPTIONS': {'driver': 'SQL Server Native Client 11.0',
'Integrated Security': 'true',
},
'TEST': {
'NAME': 'test_my_db',
},
}
}
我創造了這個實例跟我SqlLocalDB.exe:
Name: hands-on
Version: 12.0.2000.8
Shared name:
Owner: COMPANY\MY_ACCOUNT
Auto-create: No
State: Stopped
Last start time: 27-12-2016 16:53:55
Instance pipe name:
我與SSMS實例創建MY_DB和連接而成。普雷斯托!
但是,有一點問題。當我啓動Django應用程序時,它會自動啓動LocalDB實例(我可以在我的用戶帳戶下看到在任務管理器中運行的sqlservr.exe)。但是,當我運行SqlLocalDB.exe info hands-on
,輸出
State: Stopped
當我打開SSMS並連接到(LocalDB)\hands-on
連接完成得很好,但在我的任務管理器現在我可以看到第二 SQLSERVR.EXE運行,到事實證明我現在已經連線了。因此,Django/pyodbc和SMSS/SqlLocalDB.exe似乎與兩個相同的LocalDB實例的兩個單獨實例交互,這兩個實例都非常高興報告稱爲hands-on
。
我發現其中包括刪除LocalDB實例和它的文件,然後重新創建與SqlLocalDB.exe啓動它,然後才連接到它與我的Django應用程序的解決方法。然後,所有軟件似乎都與同一個實例進行交互,並且只有一個sqlservr.exe進程正在運行。可悲的是,這個解決方法有一個很大的缺點,就是在你犯了一個錯誤並且在SqlLocalDB.exe start hands-on
之前運行Django後就不能工作了。然後重新創建ghost實例,從Django的那一刻開始連接它,即使你殺了實例,用SqlLocalDB啓動它,然後重新連接到Django;鬼實例將再次出現。所以這個解決方法非常脆弱,我很難去推薦給我的同事。
有沒有人知道正在發生什麼事以及如何解決問題?除了不試圖Django和SQL服務器合併,我的意思是:對
而且我也發現[這](http://stackoverflow.com/questions/21435121/sqllocaldb-info-lists-two-instances-with-the-same-name )後可能是一個相關的問題,或者[這](http://stackoverflow.com/questions/39974109/how-can-i-specify-to-use-sql-server-localdb-2014-rather-than -sql-server-localdb)後,但到目前爲止我還沒有能夠自己揭開這個問題的神祕面紗) – Juul