数据库常见问题
为了有效排查和解决在使用云虚拟主机数据库时遇到的功能问题(例如支持哪些数据库、是否支持开启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分钟,请您耐心等待。重启过程中您的所有操作会无法生效,请您在服务器重启完成后再进行其他操作。
再次连接云虚拟主机的数据库。
如果正常连接,则问题已解决,操作结束。
如果未正常连接,则问题未解决,请提交工单获取帮助。