MySQL Windows c api 命名管道错误:"在'等待初始通信数据包'时丢失与 MySQL 服务器的连接,系统错误:0
MySQL Windows c api named pipes ERROR: "Lost connection to MySQL server at 'Waiting for initial communication packet', system error: 0
我正在编写一个将所有内容存储在MySQL数据库中的C 程序。我想避免弹出Windows安全窗口,并询问MySQLD是否具有特权。如果我单击"取消"(响应"防火墙窗口"),该程序仍然可以运行正常,因为一切都是局部的。
我正在尝试将命名管与 - 滑动网络标志一起使用,以避免使用此防火墙窗口。
开始编辑:
我正在使用MySQLD的便携式版本。它不会具有管理权。(感谢Ben指出,这是重要的信息)
结束编辑
我正在使用以下命令来启动mySQLD服务器:
C:tmp_report12345mysqldmysqlbinmysqld --user=root
--basedir="C:tmp_report12345mysqld\mysql"
--datadir="C:tmp_report12345mysqlddata"
--pid-file="C:tmp_report12345mysqldmysql.pid"
--log-error="C:tmp_report12345mysqldmysql.err"
--skip-networking
--enable-named-pipe
这有效,我能够使用以下命令行语句连接到数据库:
mysql --pipe -uroot
我试图通过C-API连接如下:
unsigned int mysql_timeout=200;
unsigned int protocol=MYSQL_PROTOCOL_PIPE;
bool mysql_reconnect=true;
bool mysql_local_infile=true;
if (mysql_options(conn,MYSQL_OPT_CONNECT_TIMEOUT, (char *)&mysql_timeout)){*logstream<<"mysql option error connect_timeout";}
if (mysql_options(conn,MYSQL_OPT_READ_TIMEOUT, (char *)&mysql_timeout)){*logstream<<"mysql option error read_timeout";}
if (mysql_options(conn,MYSQL_OPT_WRITE_TIMEOUT, (char *)&mysql_timeout)){*logstream<<"mysql option error write_timeout";}
if (mysql_options(conn,MYSQL_OPT_RECONNECT, &mysql_reconnect)){*logstream<<"mysql option error reconnect";}
if (mysql_options(conn,MYSQL_OPT_LOCAL_INFILE, &mysql_local_infile)){*logstream <<"mysql option error local_infile";}
if (mysql_options(conn,MYSQL_OPT_NAMED_PIPE, NULL)){*logstream<<"mysql option error MYSQL_OPT_NAMED_PIPE";}
if (mysql_options(conn,MYSQL_OPT_PROTOCOL, (char *)&protocol)) {*logstream<<"mysql option error protocol";}
if (!mysql_real_connect(conn,
"localhost", // SERVER
"root", // USER
NULL, // PASS
NULL, // DATABASE
0, // port
NULL, // socket
0 // client_flag
)){
*logstream<<"Database::connect mysql_real_connect failed"<<endl;
*logstream<<mysql_error(conn)<<endl;
conn=NULL;
}
此mysql_real_connect呼叫的结果是:
Database::connect mysql_real_connect failed
Lost connection to MySQL server at 'waiting for initial communication packet', system error: 0
如果我使用TCPIP连接,则一切正常,除了弹出Windows防火墙。我真的很想在不需要用户单击"防火墙"窗口上的取消的情况下进行此工作。
任何帮助都会大大应用!
如果MySQL仅有意本地,则应简单地将其配置为仅在本地地址上聆听。将其放在您的my.cnf
文件中:
bind-address = 127.0.0.1
否则使用netsh advfirewall
或类似于配置防火墙以允许MySQL。安装mysql时,通常会这样做。
示例:
- http://support.microsoft.com/kb/947709
或脚本:
- http://technet.microsoft.com/en-us/library/cc737845(v = ws.10).aspx
对于没有或需要管理特权的一次性安装,您可以使用不可限制的IP地址和随机端口配置本地通信。
您可以通过在命令行中添加--bind-address=127.0.0.1 --port=62190
来实现此目标。
除非您是管理员,否则您将无法更改防火墙规则,并且聆听命名管道通常也需要管理特权。创建共享内存部分需要秘密的eSreateglobalprivilege,因此基本上相同的限制也适用。
即使在当前C连接器中使用Admin-Run MySQL Server,这也是一个问题该错误在这里报告:http://bugs.mysql.com/bug.php?id=41860我需要找到一个没有它的MySQL C连接器的版本。
- 错误处理.将系统错误代码映射到泛型
- 系统错误:程序无法启动,因为您的计算机中缺少MSVCP140D.DLL。尝试重新安装该程序以解决此问题
- OpenCV.exe - 系统错误
- 加速 ASIO 系统错误 995:I/O 操作已中止
- Visual Studio 2017 中的 MySQL 连接器/C++ 错误"Unresolved external symbol _get_driver_instance"
- 如何从命令行运行可执行文件时启用系统错误消息
- 循环中的MySQL连接器/C 错误
- MySQL 连接器错误,将代码从 Java 转换为 C++
- Mysql 查询错误
- Qt 4.8.3 中的 Qt 资源系统错误
- MySQL Windows c api 命名管道错误:"在'等待初始通信数据包'时丢失与 MySQL 服务器的连接,系统错误:0
- 系统错误122-调用WriteMsgQueue()时出现Error_INSUFFIENT_BUFFER
- 连接期间的 MySQL C++ 分段错误
- C++11(或Boost)系统错误策略
- 如何解决使mysql-connector-c++-1.1.7错误
- 如何使用FormatMessage函数填充系统错误消息的va_list
- <system_error> 类别和标准/系统错误代码
- 在c/c++中显示可用的系统错误
- Mysql c++ 连接器错误
- 加载库调用系统错误 wpcap.dll