ASP 透過 ADO 使用 ODBC 驅動連接 MySQL。需安裝 MySQL Connector/ODBC (MyODBC),建議 5.3 或 8.0 版(支援 MySQL 5.7+、UTF-8、SSL)。
odbcad32.exe),切換至 系統 DSN 分頁。
3. 新增 → 選擇 MySQL ODBC 8.0 Unicode Driver。
4. 填寫:MySQL_DSNProduction MySQL127.0.0.1 或實際 IP3306utf8mb4<%
Dim conn, connStr
Set conn = Server.CreateObject("ADODB.Connection")
connStr = "Driver={MySQL ODBC 8.0 Unicode Driver};" & _
"Server=127.0.0.1;Port=3306;" & _
"Database=my_db;Uid=my_user;Pwd=my_pass;" & _
"Option=3;Charset=utf8mb4;"
conn.Open connStr
' ... 執行查詢
conn.Close
Set conn = Nothing
%>
<%
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DSN=MySQL_DSN"
' ...
conn.Close
Set conn = Nothing
%>
優點:原始碼無帳密、修改連線參數只改 DSN、可設定連線池、SSL 等進階選項。
SslMode=REQUIRED。On Error Resume Next 配合自訂錯誤頁,避免洩露結構資訊。Command 物件 + Parameters 防 SQL 注入。| 現象 | 原因與解法 |
|---|---|
| Driver not found | 未安裝 MyODBC、或 32/64 位不匹配(IIS 應用程式集區啟用 32 位應用程式) |
| Connection refused | MySQL 未啟動、防火牆阻擋 3306、bind-address 錯誤 |
| Access denied | 帳密錯、Host 欄位未授權(需 % 或 Web 伺服器 IP) |
| 中文亂碼 | DSN/連線字串未設 Charset=utf8mb4、資料庫/表/欄位非 utf8mb4 |
| 逾時 | CommandTimeout/ConnectionTimeout 調大、優化慢查詢 |
需安裝 unixODBC + mysql-connector-odbc,設定 /etc/odbc.ini 系統 DSN,ASP.NET Core 可用 OdbcConnection 相同方式連線。