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 ответа:
Если ваш хост-это 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"
С Наилучшими Пожеланиями