LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2035|回复: 2

在c程序中启动mysql服务器后,立即连接错误

[复制链接]
发表于 2004-12-8 22:12:52 | 显示全部楼层 |阅读模式
在c程序中启动mysql服务器后,立即连接mysql服务器时报错:'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'。我查看/var/lib/mysql目录下没有mysql.sock文件。重新在命令行下启动mysql服务器,仍然没有mysql.sock这个文件。用kill杀死mysqld进程后,命令行下启动mysql服务器,在/var/lib/mysql目录下有了mysql.sock文件,mysql服务器可以连接。我怀疑在c程序中启动mysql服务器的代码(system("/etc/init.d/mysqd start");)执行后,服务器还没有完全启动,这时候连接就会有问题,并且导致mysql服务器进程出错,所以以后也无法重新启动mysql服务器,只有在用kill杀死mysqld进程后才可以重新启动。我在system("/etc/init.d/mysqd start");后加了一句sleep(5);后就可以了。
请教高手,有没有别的办法解决这个问题?
发表于 2004-12-13 17:22:08 | 显示全部楼层

回复: 在c程序中启动mysql服务器后,立即连接错误

最初由 iamwst 发表
在c程序中启动mysql服务器后,立即连接mysql服务器时报错:'Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)'。我查看/var/lib/mysql目录下没有mysql.sock文件。重新在命令行下启动mysql服务器,仍然没有mysql.sock这个文件。用kill杀死mysqld进程后,命令行下启动mysql服务器,在/var/lib/mysql目录下有了mysql.sock文件,mysql服务器可以连接。我怀疑在c程序中启动mysql服务器的代码(system("/etc/init.d/mysqd start");)执行后,服务器还没有完全启动,这时候连接就会有问题,并且导致mysql服务器进程出错,所以以后也无法重新启动mysql服务器,只有在用kill杀死mysqld进程后才可以重新启动。我在system("/etc/init.d/mysqd start");后加了一句sleep(5);后就可以了。
请教高手,有没有别的办法解决这个问题?


对system函数判断其返回状态,system函数有三种返回状态(UNIX高级环境编程),详细见P168
启动成功之后再进行服务器连接,在分时系统中,程序执行的时间的不确定性即便是加了sleep之后也不能代表什么,最好的办法是检测返回值
发表于 2008-10-31 15:26:03 | 显示全部楼层
遇到这个问题了,还是不知道什么原因~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表