
而MySQL另外一个最流行的存储引擎之一Innodb存储数据的策略是分为两种的,一种是共享表空间存储方式,还有一种是独享表空间存储方式。
当使用共享表空间存储方式的时候,Innodb的所有数据保存在一个单独的表空间里面,而这个表空间可以由很多个文件组成,一个表可以跨多个文件存在,所 以其大小限制不再是文件大小的限制,而是其自身的限制。从Innodb的官方文档中可以看到,其表空间的最大限制为64TB,也就是说,Innodb的单 表限制基本上也在64TB左右了,当然这个大小是包括这个表的所有索引等其他相关数据。
而当使用独享表空间来存放Innodb的表的时候,每个表的数据以一个单独的文件来存放,这个时候的单表限制,又变成文件系统的大小限制了。
mysql返回修改后的列_PDO Mysql驱动返回结果的列类型问题使用statement->getColumnMeta得到的列元信息,其中的pdo_type也表明是字符串。
php可以自动处理类型转换,比如整型和字符串,但是对于其他环境,比如传给其他平台(如flash),就要在其中一端进行类型转换,或者在协议中处理。另外,要基于查询结果的元信息构建自动化的数据处理,比如ORM,也就不方便了。
原因是,mysql驱动使用mysql_fetch_row函数取得结果集,它是个字符串数组,即所有列都是字符串方式的存储,并且没根据DB存储的类型进行转换,相应地,列的元数据也就都是字符串类型了;
另外,pdo本身的数据类型也有限,跟DB、DB客户端库函数的数据类型有差异,比如pdo没有浮点数类型。
根据pdo接口规范,只要修改mysql驱动中的两个回调函数就可以了:
//连接、查询try
{
$dbh
=
new
PDO('mysql:host=localhostdbname=test',
$user,
$pass)
foreach($dbh->query('SELECT
*
from
FOO')
as
$row)
{
print_r($row)
}
$dbh
=
null//释放资源
}
catch
(PDOException
$e)
{
"错误!:
"
.
$e->getMessage()
.
"<br></br>"
die()
}
//执行删除 *** 作,插入、修改与此类似,更改SQL语句即可
$count
=
$dbh->exec("DELETE
FROM
fruit
WHERE
colour
=
'red'")
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)