ASP classic подключение к MySql не работает


Я вынужден переместить старый веб-сайт, который хорошо работал в течение многих лет на удаленном сервере windows, используя классические базы данных ASP (VBScript) и MS access.

Новая хостинговая компания (123-reg) не поддерживает MS Access на своем сервере Windows, поэтому я теперь использую MySQL. Я успешно использовал MySQL на других сайтах, но всегда использовал PHP, а не классический ASP, поэтому я никогда раньше не подключался к базе данных MySQL из ASP.

Веб-сайт имеет сотни страниц, и я был надеясь, что все, что мне нужно было сделать, это изменить строки соединения. Однако теперь я получаю ошибку 500

80004005|[Microsoft] 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"

И после прочтения этого предыдущего ответа на аналогичный вопрос:

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.

Большое спасибо

Tog

Обновление: 11 января 123-reg вернулись ко мне и сказали, что версия ODBC-5.1.8. Я изменил строку подключения, но по-прежнему получаю ошибку 500, являющуюся:

HTTP / 1.1 500 Внутренняя ошибка сервера Cache-Control: private Длина контента: 250 тип контента: текст / html сервер: Microsoft-IIS / 7.5 Set-Cookie: ASPSESSIONIDCCQSTSCA=FLAJJCCDFENAOEMMCGFGNPCF; path=/ X-Powered-By: ASP.NET дата: Ср, 11 января 2017 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
    %>
2 3

2 ответа:

Если ваш хост-это x64 box, попробуйте обе строки подключения x64 с Provider=MSDASQL и MySQL ODBC 5.2w Driver (не уверен, что вы упоминаете "8."в "5.1.8."- "5.1 "или" 5.2 w " должно быть нормально). Если это не поможет-проверьте, предоставляет ли 123-reg DSN для баз данных (вы используете DSN-less соединение) или попробуйте подключиться с IP базы данных.

Чтобы убедиться, что это проблема asp, попробуйте подключиться из тестового php-скрипта (Пример [1], [2]).

Я добавляю только Unicode Driver в строку соединения 5.3 и проблема решена

Измените это :

Conn.Open "DRIVER={MySQL ODBC 5.3 };SERVER=localhost; DATABASE=psa; UID=admin;PASSWORD=mypassword;Port=8306; OPTION=3"

Кому:

Conn.Open "DRIVER={MySQL ODBC 5.3 **Unicode Driver**};SERVER=localhost; DATABASE=psa; UID=admin;PASSWORD=mypassword;Port=8306; OPTION=3"

С Наилучшими Пожеланиями