标签归档:mysqlclient

解决mysql连接问题:Can’t connect to MySQL server on ‘ ’ (113)

今天应用服务器出现“Can’t connect to MySQL server on ‘   ’ (113)”的错误,连不上mysql数据库服务器了。

应用服务器运行在Windows7中的一个VMware Ubuntu虚拟机里,网上有资料说是防火墙的问题,关闭Win7的防火墙,还是一样,报“Can’t connect to MySQL server on (113)”错误。

ping主机也ping不通;打开firefox浏览器,无法上网浏览网页,应该就是虚拟机的问题了。

从虚拟机的菜单“VM->Settings…”,在Device列表中选择“Network Adapter”,以前是NAT模式,改成Bridged模式,再次运行程序,OK了。

上个图:

 

 

说明一下,这个问题跟win7的防火墙是没啥关系的,放心开着吧。

 

解决 undefined reference to `_uncompress’ `_compress’问题

在eclipse+CDT+mysql环境下编译项目,出现如下错误:

Building target: dbdeal.dll
Invoking: Cygwin C++ Linker
g++ -L”C:\cygwin\code\trunk\Utility\Debug” -L”C:\cygwin\code\trunk\log\Debug” -L”C:\cygwin\usr\local\lib\mysql” -shared -o”dbdeal.dll” ./LoadSticTable.o ./ParseCommand.o ./SQLQuery.o ./TableModels/TabBase.o ./TableModels/tabAnalysisData.o ./TableModels/tabCmdBuffer.o ./TableModels/tabDevice.o ./TableModels/tabFirmware.o ./TableModels/tabRawData.o ./TableModels/tabUser.o ./TableModels/tabWarningRecord.o -lUtility -llog -lmysqlclient
C:\cygwin\usr\local\lib\mysql/libmysqlclient.a(my_compress.o):my_compress.c:(.text+0x5f): undefined reference to `_uncompress’
C:\cygwin\usr\local\lib\mysql/libmysqlclient.a(my_compress.o):my_compress.c:(.text+0x1aa): undefined reference to `_compress’
collect2: ld returned 1 exit status
make: *** [dbdeal.dll] Error 1

?
网上找了很多关于‘undefined reference to `_uncompress’’的问题,但都很草草的说给gcc添加‘-lz’参数可以解决问题日,但是问为啥,都说不出个所以然来。
很多都是命令行编译,而我用的是eclipse,makefile动态生成,所以去修改makefile是不明智的,只能从配置入手。
在项目上右键—>属性,出现属性对话框,到‘Cygwin C++ Linker’项下的‘Miscellaneous’里的‘Linker flags’输入参数‘ -lz’:

编译看看,发现-lz参数被直接串在了lib库查询路径的后面,而不是mysqlclient的后面:

g++ -L”C:\cygwin\code\trunk\Utility\Debug” -L”C:\cygwin\code\trunk\log\Debug” -L”C:\cygwin\usr\local\lib\mysql” -lz -shared -o”dbdeal.dll”

所以‘-lz’参数对mysqlclient不起作用。
其实在‘Expert settings’中有个‘Command line pattern’的设置:

${COMMAND} ${FLAGS} ${OUTPUT_FLAG}${OUTPUT_PREFIX}${OUTPUT} ${INPUTS}

其中的‘${FLAGS}’变量就是上面设置‘-lz’参数的‘Linker flags’,解决办法出来了:把 ${FLAGS} 挪到 ${INPUTS} 之后,问题解决: