连接期间的 MySQL C++ 分段错误
mysql c++ segmentation fault during connect
在尝试使用 c++ 代码连接到 mysql 数据库时,我在调用连接时遇到了分段错误。
这是代码:
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <string.h>
#include "mysql_connection.h"
#include "mysql_driver.h"
#include <cppconn/driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>
#include <cppconn/connection.h>
#include <cppconn/prepared_statement.h>
#include "iolib.h"
int main(int argc, char* argv[])
{
cout<<"1n";
sql::Driver *driver = sql::mysql::get_driver_instance();
cout<<"Driver: "<<driver<<", "<<driver->getName()<<"n";
sql::Connection *conn = driver->connect("tcp://<ip>:3306", "root", "password");
cout<<"Connectedn";
return 0;
}
输出为:
1
Driver: 0x1755050, MySQL Connector C++ (libmysql)
Segmentation fault (core dumped)
以前我忘了将此机器添加到允许的 IP,然后它给了我一个错误,说我未获得授权而不是分段错误。允许IP后,我收到此错误。我可以阻止 IP 以再次获得不允许的 IP 错误。
这是生成文件:
CC=g++
CFLAGS=-c -g -rdynamic
LDFLAGS=-lpthread -ldl -rdynamic -lmysqlcppconn
EXECUTABLE=myexe
all: main
$(CC) $(LDFLAGS) *.o -o $(EXECUTABLE)
@echo -e " 33[32mFinished! 33[0m"
main:
$(CC) $(CFLAGS) -o iolib.o iolib.cpp
$(CC) $(CFLAGS) -o importer.o importer.cpp
@echo -e " 33[36mObject files compiled! 33[0m"
这台机器运行的是 Fedora 19,库是用"yum install mysql mysql-connector-c++-devel mysql++"安装的。我可能对这里的确切命令有点不对劲,但重要的是要说它们都是用 yum 安装的。
在网上搜索类似的问题,我遇到的最有可能的事情是人们说我的库一定有问题,所以ldd myexe随之而来。
linux-vdso.so.1 => (0x00007fff72e6b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000370f000000)
libdl.so.2 => /lib64/libdl.so.2 (0x000000370ec00000)
libmysqlcppconn.so.6 => /lib64/libmysqlcppconn.so.6 (0x00007f2c335ee000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000003716800000)
libm.so.6 => /lib64/libm.so.6 (0x000000370f800000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000003710800000)
libc.so.6 => /lib64/libc.so.6 (0x000000370e800000)
/lib64/ld-linux-x86-64.so.2 (0x000000370e400000)
libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f2c3301d000)
libz.so.1 => /lib64/libz.so.1 (0x000000370f400000)
libssl.so.10 => /lib64/libssl.so.10 (0x0000003728800000)
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x0000003723400000)
libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x0000003724c00000)
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x0000003725800000)
libcom_err.so.2 => /lib64/libcom_err.so.2 (0x0000003723c00000)
libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x0000003725400000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x0000003725000000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x0000003724800000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x0000003711000000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x0000003710400000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x0000003710000000)
我怎样才能做到这一点?
我感谢任何帮助。
许多MySQL C++ Connector函数都会引发异常。
用try / catch
块包围函数调用以捕获异常。 当执行进入catch
块时,使用调试器从异常中查找更多信息,例如 what()
方法。
另一种选择是链接到库的调试版本。 您可能需要下载源代码并自己构建它们。
相关文章:
- 分段故障(堆芯转储)矢量
- 数组的指针从不分段故障
- 在某些循环内使用vector.push_back时出现分段错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 在线编译器中的分段C++没有打印消息
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 当我的阵列太大时出现分段错误
- Windows 10-使用gtkmm-3.0库和g++[包括再现]的分段故障
- 分段错误当我试图运行程序时出错
- 在c++中初始化矩阵时出现分段错误(核心转储)
- 尝试使用集合函数时出现分段错误
- 我无法缩小此分段错误的原因
- g++的分段错误(在NaN上使用to_string两次时)
- 我是如何在这段代码中出现分段错误的
- 创建结构的数组时遇到分段错误
- 在c++中键入向量中的所有值后,得到分段错误(核心转储)
- 在 c++ 中实现 Trie 时出现分段错误
- 为什么 fstream 在打开带有格式的文件时会导致分段错误?
- 为什么我遇到分段错误?
- 动态类的分段错误(家庭作业问题)