博文

目前显示的是标签为“MySQL”的博文

MySQL使用长连接时连接Innodb数据库时遇到的怪问题

因为在MySQL中存放的相关交易的数据都是用事务型的Innodb数据库。加上最近改造程序整体架构,把所有的MySQL的读取连接都改为了使用DButils的长连接,于是这就出现了一个诡异的问题: 明明交易的数据库中已经成功的提交了,但是在之前那个长连接中的查询出来的数据却没有任何变化。 这诡异的数据回溯问题在之前每次都新建立连接的情况下是没有的,只有长连接的情况下会出现这种问题。而且数据是确实的提交了的,并且用GUI工具查询的时候能够得到正确的结果。 先开始想到的办法是每次对Innodb数据库做查询操作的时候,首先使用COMMIT,或者ROLLBACK,这样确实可以得到正确的结果,但是每次都这么做未免也太奇怪了。 查阅了MySQL的手册,手册中是这么说的: InnoDB默认是可重复读的(REPEATABLE READ) 而这个REPEATABLE READ的是最高级别的隔离,也就是不可读取未提交的任何数据。数据库会维持一个快照来实现这个功能。 虽然不知道具体是为什么,但是似乎之前DButils一直读取到的都是之前连入进去时候建立的快照信息。 于是简单的解决办法就是在建立长连接的时候执行: “set session transaction isolation level read committed” 亦即将当前的会话的隔离级别设置为READ COMMITTED即可 或者在每次执行SQL语句之前执行COMMIT

在CentOS6上用RPM包安装MySQL

服务器上安装的是CentOS 6.3,原本用yum安装了MySQL但是版本过低,于是打算用RPM来升级 首先直接到MySQL的官网下载RPM包 http://www.mysql.com/downloads/mysql/#downloads 下载的系统选择Redhat 6就可以了,我安装的是x64的,所以选择了MySQL-server-5.5.29-2.el6.x86_64.rpm和MySQL-server-5.5.29-2.rhel5.x86_64.rpm 然后直接rpm -ivh MySQL-server-5.5.29-2.el6.x86_64.rpm结果告诉我这个: error: Failed dependencies: libaio.so.1()(64bit) is needed by MySQL-server-5.5.29-2.rhel5.x86_64 libaio.so.1(LIBAIO_0.1)(64bit) is needed by MySQL-server-5.5.29-2.rhel5.x86_64 libaio.so.1(LIBAIO_0.4)(64bit) is needed by MySQL-server-5.5.29-2.rhel5.x86_64 mysql conflicts with MySQL-server-5.5.29-2.rhel5.x86_64 MySQL conflicts with mysql-5.1.61-4.el6.x86_64 嗯,意思就是缺少libaio这个包了,于是用yum来简单安装之: yum install libaio 接着再继续安装,结果报告以下错误: error: Failed dependencies: mysql conflicts with MySQL-server-5.5.29-2.rhel5.x86_64 MySQL conflicts with mysql-5.1.61-4.el6.x86_64 原因就是——忘了卸载之前的MySQL了,于是: rpm -qa mysql 得到的结果是: mysql-5.1.61-4.el6.x86_64 用rpm -e mysql 卸载之,再安装……于是这次报告: f...

我还是从了MySQL的客户端好了...

之前一直在用PHP手写代码来操作数据库,虽然也算是能够用,但是总感觉很不是那么回事,万一写错了我就泪流满面了…… 之前也用过一款MySQL的客户端,也就是上传一个PHP文件,然后就可以通过那个类似探针一样的PHP文件来处理SQL请求,比PHPMyAdmin这样的重量级的需要在VPS上上传很久的家伙友好多了。 可惜已过去这么久了,我连那款软件的名字都忘了,现在还是重新找了…… 于是就找到了 Navicat……虽然本身是收费软件,但是Navicat Lite版是免费的,我也用不到那么多的功能,它给我一个SQL窗口我就很满足了,把PHP探针传上去,然后改个诡异的名字,配置好MySQL的用户名和密码就可以使用了相当的方便。另外发现这个软件居然还支持Oracle和SQLite之类的,真是不错~

一觉醒来,世界变了

一大早就发现了Shock的消息... Oracle收购了Sun.... 之前一直在传闻IBM要收购Sun,一直以来,IBM都是最大的开源支持者,他收购了Sun,对MySQL无疑是大的鼓励,但是这下被Oracle收购了之后...MySQL何去何从? 网上预测的结果是甲骨文无疑会慢慢的会淡化MySQL,让更都的免费客户转向企业级的Oracle数据库...这无疑是重大的打击. 不过也因为MySQL的开源特征,也并不排除有第三方续写MySQL代码的可能性...不过那个时候估计就要改名换姓了... 前途未卜,能做的也只是观望了.