有两个版本的软件,都用到mysql,A版本的my.ini文件很简单,只设置基本的信息如mysql所在的路径等,而B版本的则在my.ini文件中设置了日志文件的名称如:mysql-bin,安装后也有mysql-bin.index,mysql-bin.index文件中的格式如下:
.\mysql-bin.000001
.\mysql-bin.000002
.\mysql-bin.000003
.\mysql-bin.000004
.\mysql-bin.000005文件后面还多了一空行。
现在的问题是:
安装好A版本后,可以正常起动mysql,此时不会读日志文件和.index文件(解包后实际上也有这些文件)。安装B版本后,会将my.ini覆盖,并执行:
mysqld-nt.exe --remove ; mysqld-nt.exe --install ,重新安装mysql服务。此后,服务一直起不来,打开 .err文件查看日志,是读.\mysql-bin.000005 文件失败。两个版本除了my.ini文件不同外,其它的文件包括.exe文件都是相同的,文件大小一样。如果再将my.ini文件替换为A版本的,即:没有设置日志文件的.但是mysql服务还是会读取日志文件并记录错误日志,服务起不来。即使再执行 mysqld-nt.exe --remove ; mysqld-nt.exe --install , 问题依旧。
如果是在打包B版本的时候即有A版本的my.ini,则安装后不会出现此问题请教高手,是不是在第一次执行 mysqld-nt.exe --install 的时候会记录某些东西?具体的流程是怎么样的?在上面的问题中,如果是将mysql-bin.index删除,则mysql会自动生成mysql-bin.index,并且服务能够起来。
因为要兼容A版本而且A版本不会再进行发布,想弄清楚一下mysql具体的流程

解决方案 »

  1.   

    删除掉你的这些BINLOG的索引文件。因为它还需要和ibdata/iblog 等文件匹配。
      

  2.   

    现在觉得奇怪的问题是:如果第一次的my.ini是不读日志文件,则不会出错,
    但是在第一次执行mysqld-nt.exe --install时,如果是用的读日志文件的my.ini则以后即使换成不读日志文件的my.ini,它还是会去读日志文件,这是什么原因?即使你再用 --remove 去掉再 --install 也不行啊