2017-01-09 55 views
3

我不得不使用傳統的ASP(VBScript)和MS訪問數據庫在遠程Windows服務器上移動一直運行良好的舊網站。與MySql無法正常工作的ASP經典連接

新託管公司(123-reg)在其Windows服務器上不支持MS Access,因此我現在使用MySQL。我在其他網站上成功地使用了MySQL,但總是使用PHP而不是傳統的ASP,所以我從來沒有從ASP連接過MySQL數據庫。

該網站有數百頁,我希望我所要做的就是改變連接字符串。但是我現在得到一個500錯誤

80004005 | [微軟] ODBC_Driver_Manager] _Data_source_name_not_found_and_no_default_driver_specified

已經難倒我。

我已經試過

set Conn=server.createobject("ADODB.CONNECTION") 
set rs = server.createobject("ADODB.Recordset") 
conn.open "DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" & servername & "; DATABASE=" & database & "; UID=" & username & ";PASSWORD=" & pword & "; OPTION=3;" 

我也試過:

conn.open "DRIVER={SQL Server};SERVER=" & servername & "\SQLEXPRESS;DATABASE=" & database & ";UID=" & username & ";PWD=" & pword" 

和閱讀this previous answer到類似queation後:

conn.open "DRIVER={MySQL ODBC 5.1 Driver}; SERVER=" & servername & "; DATABASE=" & database & "; UID=" & username & ";PASSWORD=" & pword & "; OPTION=3;charset=utf8;" 

,仍然得到同樣的錯誤。

我找到了互聯網和這個網站,但每當我找到信息,它就假定我使用我自己的服務器,而我並不知道。頁面:https://support.microsoft.com/en-gb/kb/306345建議我對服務器註冊表進行更改,當然這是我無法做到的,無論如何,我很難接受像123-reg這樣大的公司必須在其服務器上更改內容讓我連接到數據庫。

因此,我得出結論,我有我的連接編碼有問題(可能是簡單的)。

我確實提出了123-reg的門票,但他們告訴我這是一個編碼問題,他們沒有幫助,這加強了我的理論。

我會對這方面的任何幫助深表感謝。我打算現在用PHP重寫網站,並且我知道我可以很好地完成這項工作,但由於有數百頁的代碼需要花費我幾個月的時間,我正在尋找一個快速修復的網站再次使用當前頁面,同時使用PHP重新編寫整個站點。

非常感謝

火車

更新:1月11日 123-REG已經回來對我說的ODBC的版本是5.1.8。我已經改變了連接字符串,但仍然獲得了500錯誤,存在:

HTTP/1.1 500內部服務器錯誤的Cache-Control:私人 的Content-Length:250 Content-Type的:text/html的服務器:Microsoft- IIS/7.5 Set-Cookie:ASPSESSIONIDCCQSTSCA = FLAJJCCDFENAOEMMCGFGNPCF;路徑=/ X-Powered-By:ASP。NET日期:星期三,2017年1月11日14時46分07秒GMT連接: 關閉錯誤處理的URL

沒有行號,並沒有錯誤描述時發生在服務器上。

我寫了一個簡單的頁面來測試連接和我的完整的代碼:

<%@ Language=VBScript %> 
    <% 
    option explicit 
    Response.Buffer = true 
    '============================= 
    'database connection variables 
    dim servername, username, pword, database 
    servername = "cust-mysql-123-19" 'The name of the Server 
    username = "atourist" 'The username for the database 
    pword = "redacted for this post" 'The password for the database 
    database = "atourist" 'The database to use 
    '============================ 
    dim rs 
    dim strSQL 
    dim conn 
    dim ds 
    dim county 
    dim numrec 
    county="Grampian" 
    %> 
    <html> 
    <head> 
    <title>Test Page</title>] 
    </head> 
    <body> 
     <% 
    ' connect to database and retrieve recordset 
    set conn=server.createobject("ADODB.CONNECTION") 
    set rs = server.createobject("ADODB.Recordset") 
    strSQL = "select * from ukgh where county='" & county & "' ORDER by random ASC" 
    conn.open "DRIVER={MySQL ODBC 5.1.8. Driver}; SERVER=" & servername & "; DATABASE=" & database & "; UID=" & username & ";PASSWORD=" & pword & "; OPTION=3;" 
    set rs = conn.Execute(strSQL) 
    '=============================== 
    ds=rs.GetRows() 
    rs.close 
    conn.close 
    set rs = nothing 
    set conn = nothing 

    'display records 
    for Numrec =LBound(ds, 2) To UBound(ds, 2) 

    response.write DS(1, numrec) & ", " & DS(2, numrec) & "<br />" 

    Next 
    %> 
    </body> 
    </html> 
    <% 
    response.end 
    %> 
+0

是否安裝了MySql ODBC 3.51驅動程序?你可以[在這裏下載](https://dev.mysql.com/downloads/connector/odbc/3.51.html)。你想要的連接字符串是:'Driver = {MySQL ODBC 3.51 Driver}; Server = myServerAddress; Database = myDataBase; User = myUsername; Password = myPassword; Option = 3;'(取自https://www.connectionstrings.com/mysql-connector-odbc-3-51/) –

+0

@Lynn謝謝,但我沒有由於該網站由123-reg遠程託管,所以可以安裝驅動程序。我已經嘗試過你建議的連接字符串(見上面),但它不起作用。 –

+0

僅僅因爲123-reg的支持人員說它是一個編碼問題並不意味着它是一個編碼問題。 :/你能問他們是否安裝了MySQL ODBC 3.51驅動程序? – Martha

回答

1

如果你的主機是64箱,同時嘗試x64 connection stringsProvider=MSDASQLMySQL ODBC 5.2w Driver(不知道你是否768,16提到「 8.「在」5.1.8「中 - 」5.1「或」5.2w「應該沒問題)。如果它不起作用 - 請檢查123-reg是否爲數據庫提供DSN(您使用無DSN連接)或嘗試連接數據庫的IP。

爲確保這是一個asp問題,請嘗試從測試php腳本進行連接(示例[1][2])。

+0

是的,我在設置MySQL數據庫時測試了一個PHP連接,它工作正常。這個問題似乎與MySQL ODBC版本有關。 :-) –