导航

[解决]MySQL数据库启动时,出现内存不能为read

Posted on 2011-02-18 18:10  FryFish  阅读(380)  评论(0编辑  收藏  举报
在"mysql的安装目录\bin"中, 有一个libmySQL.dll, 而在安装mysql的时候, windows installer版的安装程序会问我们要不要把"mysql安装目录\bin"放入环境变量path中, 一般我们都会同意放入path中.
然后在装完php和apache时, 我们需要把php扩展的环境变量手动添加到path中, 一般就是我们会把这个路径添加到path的最后
然后在apache的phpmodule调用mysql的库来访问mysql时, 会首先查找libmysql.dll文件, 然后这个dll会使用php ext里的dll来完成访问工作.
问题就出在这里了, 因为在path中mysql的环境变量在php环境变量的前面, 所以libmysql.dll文件时mysql的, 而他所需要的dll文件却是有php ext来提供的, 而php ext也提供了自己的libmysql.dll,却由于优先级问题, 而并没有被使用, 而按照我刚才所描述的安装方式会造成用mysql带的libmysql.dll来访问php ext带的其他dll文件的问题, 这样会造成版本不一致而出现崩溃. 决绝方法很简单, LS的方式是将php ext的libmysql放到system32, 认为提升这个dll的优先级, 另外一种也是我推荐的方式, 就是在path设置中改变php ext目录和mysql bin目录的顺序, 或者直接删掉mysql bin.