与MySql无法正常工作的ASP经典连接

问题描述:

我不得不使用传统的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

如果你的主机是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版本有关。 :-) –