為了有效排查和解決在使用云虛擬主機數據庫時遇到的功能問題(例如支持哪些數據庫、是否支持開啟event_scheduler組件)和其他操作問題(例如,如何擴大數據庫空間、數據庫導入失敗問題等)。本文為您匯總了使用云虛擬主機數據庫時遇到的一些常見問題。
功能問題
操作問題
云虛擬主機支持哪些數據庫?
不同操作系統的云虛擬主機支持不同類型的數據庫,如下所示:
Linux操作系統云虛擬主機支持MySQL和SQLite數據庫。
Windows操作系統云虛擬主機支持SQL Server和Access數據庫。
更多信息,請參見云虛擬主機支持的數據庫版本。
MySQL數據庫是否支持開啟event_scheduler?
云虛擬主機的MySQL數據庫默認關閉event_scheduler
參數,且不支持手動開啟該參數。
event_scheduler
是MySQL中一個類似定時器的組件,通過調用該組件,您可以在指定的時間點執行一條SQL語句或一個語句塊,也可以用于在固定間隔重復執行SQL語句。
通過以下操作,您可以看到event_scheduler
參數為關閉(OFF
)狀態:
登錄MySQL數據庫。
具體操作,請參見通過DMS Web版本登錄數據庫。
在頂部菜單欄,選擇SQL窗口。
在SQL窗口編輯區域,輸入
show variables like '%sche%';
,然后單擊執行(F8)。命令執行成功后,在結果集1頁簽下,您可以查詢到
event_scheduler
的狀態為OFF
。
MySQL函數與MySQLi函數有什么區別?
PHP可以通過MySQL和MySQLi兩種函數操作MySQL數據庫,函數的具體說明和示例代碼如下所示:
MySQL函數
在PHP 5.0之前,一般使用PHP的MySQL函數操作MySQL數據庫,屬于面向過程的方式。例如,函數
mysql_query()
。MySQL是非持久連接函數,每次連接都會打開一個新的連接進程。
MySQL函數語法:以
query
語句為例,使用mysql_query(SQL語句,資源標識)
時,資源標識是可選參數,默認值是上次打開的連接或資源。以使用MySQL函數連接數據庫、并從數據庫中獲取指定字段的值為例,MySQL示例代碼如下所示:
$conn = mysql_connect('localhost', 'user', 'password'); //連接mysql數據庫 mysql_select_db('data_base'); //選擇數據庫 $result = mysql_query('selectfrom data_base'); //第二個可選參數,指定打開的連接 $row = mysql_fetch_row( $result ) ) //只取一行數據 echo $row[0]; //輸出第一個字段的值
MySQLi函數
在PHP 5.0之后,新增了MySQLi函數,它是MySQL函數的增強版,比MySQL函數更加穩定、高效和安全,屬于面向對象的方式。例如,函數
mysqli_query()
。說明MySQLi不僅封裝了數據庫操作過程中的常用方法,還封裝了事務等一些高級操作。
MySQLi是永久連接函數。即使您多次運行MySQLi函數連接服務器,也只會使用同一連接進程,可有效減少服務器的資源浪費。
MySQLi函數語法:以
query
語句為例,使用mysqli_query(資源標識,SQL語句)
時,必須指定資源。以使用MySQLi函數連接數據庫、并從數據庫中獲取指定字段的值為例,MySQLi示例代碼如下所示:
$conn = new mysqli('localhost', 'user', 'password','data_base'); //使用new操作符,最后一個參數是直接指定數據庫 $conn -> select_db('data_base') //如果上一句沒有指定數據庫,需要執行本命令指定數據庫 $result = $conn -> query( 'selectfrom data_base'); $row = $result -> fetch_row(); //取一行數據 echo row[0]; //輸出第一個字段的值
如何管理云虛擬主機數據庫?
購買云虛擬主機時,阿里云會根據您選擇的數據庫類型為您的云虛擬主機預裝數據庫。您可以在云虛擬主機管理控制臺執行重置數據庫密碼、變更數據庫、備份數據庫的數據等操作,也可以通過數據管理DMS對數據庫中的表和數據進行維護。更多信息,請參見云虛擬主機數據庫概述。
您可以通過以下方式管理數據庫:
(推薦)數據管理DMS:阿里云提供的集數據管理、結構管理、用戶授權、安全審計、數據趨勢、數據追蹤于一體的數據管理服務。推薦您通過數據管理DMS Web版本登錄數據庫。具體操作,請參見通過DMS Web版本登錄數據庫。
Navicat for MySQL:用于管理和開發MySQL的理想解決方案,是一套單一的應用程序,您可以使用Navicat for MySQL導入導出MySQL數據庫數據。具體操作,請參見通過Navicat for MySQL導入SQL文件和通過Navicat for MySQL導出數據庫表中的數據。
SQL Server Management Studio (SSMS):用于管理任何SQL基礎結構的集成環境,您可以使用SSMS導入導出SQL Server數據庫數據。具體操作,請參見通過SQL Server Management Studio導入SQL Server數據庫數據和通過SQL Server Management Studio導出SQL Server數據庫數據。
如何查看數據庫已用空間?
本文以MySQL數據庫為例,操作步驟如下所示:
登錄云虛擬主機管理控制臺。
查看云虛擬主機數據庫空間的使用情況。
站點信息頁面:
在站點信息頁面的網站信息區域查看空間使用情況。
數據庫信息頁面:
單擊左側的數據庫信息,在數據庫信息頁面的數據空間列下查看空間使用情況。
如何擴大云虛擬主機的數據庫空間?
阿里云會提前為云虛擬主機預裝數據庫。購買云虛擬主機后,如果您需要擴大云虛擬主機的數據庫空間來滿足當前業務需要,可以通過以下方法來實現。
升級云虛擬主機:如果您業務需要的數據庫空間最大為1 GB,您可以通過升級云虛擬主機來擴大數據庫空間。具體操作,請參見升級云虛擬主機。
額外購買數據庫空間:如果當前業務需要的數據庫空間超過主機本身預裝的數據庫空間,甚至超過1 GB,您可以通過額外購買數據庫空間來擴大空間大小。具體操作,請參見增加云虛擬主機的數據庫空間。
如何修改ASP和ASP.NET網站的數據庫連接字符串?
當您執行手動遷移網站數據、重置數據庫密碼等操作后,還需要同步修改網站程序配置文件中包含的數據庫連接字符串信息。
在使用ASP或ASP.NET編寫的網站程序中,一般配置文件Conn.asp和Web.Config中包含連接數據庫信息的字符串。以配置文件Conn.asp為例,代碼示例如下:
set Conn=server.CreateObject("ADODB.CONNECTION")
StrConn="Provider=SQLOLEDB;Data Source=云虛擬主機數據庫地址,端口號;User ID=云虛擬主機數據庫用戶名;Password=云虛擬主機數據庫密碼;Initial Catalog= 云虛擬主機數據庫名稱"
Conn.open StrConn
數據庫信息變更后,上述代碼示例中的數據庫信息需要您替換為變更后的數據庫信息。獲取數據庫信息的具體操作,請參見獲取和配置數據庫信息。
數據庫導入失敗或無法導入怎么辦?
問題現象:
將本地數據庫的SQL文件、CSV文件或.bak
格式的SQL Server文件導入云虛擬主機數據庫時,提示數據庫導入失敗。
可能原因:
原因一:待導入的數據庫對應的數據量過大。
原因二:使用舊版的DMS(Web版)導致無法導入。
解決方案:
針對原因一,您可以通過第三方數據庫軟件連接數據庫進行備份并再次進行導入操作。例如Navicat for MySQL或者SQL Server Management Studio軟件。具體操作,請參見通過Navicat for MySQL導入SQL文件或通過SQL Server Management Studio導入SQL Server數據庫數據。
針對原因二,通過新版DMS入口重新登錄數據庫,然后再次進行數據庫導入操作。
重要登錄新版DMS時,您必須擁有阿里云賬號。如果通過代理商購買的云虛擬主機,請及時聯系代理商進行賬號轉移操作,具體操作,請參見轉移賬號。
數據庫連接數已占滿怎么辦?
問題現象:
連接云虛擬主機的數據庫時,提示云虛擬主機數據庫存在故障,無法正常連接,并出現類似如下報錯信息User bdm2569**** already has more than 'max_user_connections' active connections
,表示數據庫連接數已滿。
可能原因:
網站程序可能存在數據庫慢查詢或者數據庫連接未釋放等問題。
解決方案:
修改網站程序代碼,提高數據庫的查詢速度或者正常釋放數據庫連接。
重啟云虛擬主機服務器。具體操作,請參見重啟云虛擬主機和云享主機。
重要重啟服務器需要15分鐘,請您耐心等待。重啟過程中您的所有操作會無法生效,請您在服務器重啟完成后再進行其他操作。
再次連接云虛擬主機的數據庫。
如果正常連接,則問題已解決,操作結束。
如果未正常連接,則問題未解決,請提交工單獲取幫助。