将 C++ 与 mysql 连接时出现文件损坏错误
getting corrupt file error while connecting c++ with mysql
我正在尝试使用 visual studio 2019 将 MySql 与 C++ 连接,但出现文件损坏错误,我下载了 no-install-1.1.12-winx64 版本的连接器(我的电脑是 64 位),然后我下载了 boost 1.75.0 并链接了它。我的链接如下:(在所有配置上,Win32/x64 平台):
配置属性:
一般的:
(它是一个 dll 库)conf。类型:.dll
VC++ 目录:
包含目录 - $(SolutionDir)mysql-connector-c++-noinstall-1.1.12-winx64\include
库目录:
$(SolutionDir)mysql-connector-c++-noinstall-1.1.12-winx64\lib;
C/C++:
一般的:
附加包含目录 - $(solutiondir)boost_1_75_0
链接器:
一般的:
其他库目录 - $(SolutionDir)mysql-connector-c++-noinstall-1.1.12-
winx64\lib;C:\Program Files\MySQL\MySQL 服务器 8.0\lib
输入:
mysqlcppconn.dll;libmysql.dll;%(附加依赖项)
我不是 C++ 链接方面的老手,所以我很确定我在链接上做错了什么,请帮忙! (Visual Studio 2019,Windows 10 64 位,10.0,内部版本 19041,19041.vb_release.191206-1406)
这是我收到此错误的代码:
int main(){
cout << endl;
cout << "Running 'SELECT 'Hello World!'" << endl;
try {
sql::Driver* driver;
sql::Connection* con;
sql::Statement* stmt;
sql::ResultSet* res;
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
con->setSchema("test");
stmt = con->createStatement();
res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
while (res->next()) {
cout << "\t... MySQL replies: ";
/* Access column data by alias or column name */
cout << res->getString("_message") << endl;
cout << "\t... MySQL says it again: ";
/* Access column data by numeric offset, 1 is the first column*/
cout << res->getString(1) << endl;
}
delete res;
delete stmt;
delete con;
}
catch (sql::SQLException& e) {
cout << "# ERR: SQLException in " << __FILE__;
cout << "(" << __FUNCTION__ << ") on line "<< __LINE__ << endl;
cout << "# ERR: " << e.what();
cout << " (MySQL error code: " << e.getErrorCode();
cout << ", SQLState: " << e.getSQLState() << " )" << endl;
}
cout << endl;
return EXIT_SUCCESS;
}
这是错误日志:
错误'unicodeescape'编解码器无法解码位置 243133 中的字节:截断 mysqlcppconn.dll8020
整数值的错误错误字符:'8'(基数 8)lib\mysqlcppconn.dll 428
错误无法分配给二元运算符 \mysqlcppconn.dll 7306
还有一百万份这些以及更多...
(我也尝试了在这里找到的步骤但无济于事:https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-apps-windows-visual-studio.html#connector-cpp-apps-windows-linking)
P.S., 在写这篇文章之前,我只是得到了“无法从损坏的文件 0x06 中读取”错误,但是由于某种原因,当我试图获取这个问题的错误日志的副本时,我开始得到上面的这些错误.
请帮忙!谢谢...
好吧,基本上我用有史以来最“程序员”的方式解决了它,我发疯了,删除了整个项目并重新开始,这次确保一切都是 x64 位(我确保它的 64 位之前,但我似乎忽略了一些东西)并确保我逐字逐句地遵循文档,你知道吗,它起作用了!
我正在尝试使用 visual studio 2019 将 MySql 与 C++ 连接,但出现文件损坏错误,我下载了 no-install-1.1.12-winx64 版本的连接器(我的电脑是 64 位),然后我下载了 boost 1.75.0 并链接了它。我的链接如下:(在所有配置上,Win32/x64 平台): 配置属性: 一般的: (它是一个 dll 库)conf。类型:.dll VC++ 目录: 包含目录 - $(SolutionDir)mysql-connector-c++-noinstall-1.1.12-winx64\include 库目录: $(SolutionDir)mysql-connector-c++-noinstall-1.1.12-winx64\lib;
C/C++: 一般的: 附加包含目录 - $(solutiondir)boost_1_75_0
链接器: 一般的: 其他库目录 - $(SolutionDir)mysql-connector-c++-noinstall-1.1.12- winx64\lib;C:\Program Files\MySQL\MySQL 服务器 8.0\lib 输入: mysqlcppconn.dll;libmysql.dll;%(附加依赖项)
我不是 C++ 链接方面的老手,所以我很确定我在链接上做错了什么,请帮忙! (Visual Studio 2019,Windows 10 64 位,10.0,内部版本 19041,19041.vb_release.191206-1406) 这是我收到此错误的代码:
int main(){
cout << endl;
cout << "Running 'SELECT 'Hello World!'" << endl;
try {
sql::Driver* driver;
sql::Connection* con;
sql::Statement* stmt;
sql::ResultSet* res;
driver = get_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "root", "root");
con->setSchema("test");
stmt = con->createStatement();
res = stmt->executeQuery("SELECT 'Hello World!' AS _message");
while (res->next()) {
cout << "\t... MySQL replies: ";
/* Access column data by alias or column name */
cout << res->getString("_message") << endl;
cout << "\t... MySQL says it again: ";
/* Access column data by numeric offset, 1 is the first column*/
cout << res->getString(1) << endl;
}
delete res;
delete stmt;
delete con;
}
catch (sql::SQLException& e) {
cout << "# ERR: SQLException in " << __FILE__;
cout << "(" << __FUNCTION__ << ") on line "<< __LINE__ << endl;
cout << "# ERR: " << e.what();
cout << " (MySQL error code: " << e.getErrorCode();
cout << ", SQLState: " << e.getSQLState() << " )" << endl;
}
cout << endl;
return EXIT_SUCCESS;
}
这是错误日志:
错误'unicodeescape'编解码器无法解码位置 243133 中的字节:截断 mysqlcppconn.dll8020 整数值的错误错误字符:'8'(基数 8)lib\mysqlcppconn.dll 428 错误无法分配给二元运算符 \mysqlcppconn.dll 7306
还有一百万份这些以及更多... (我也尝试了在这里找到的步骤但无济于事:https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-apps-windows-visual-studio.html#connector-cpp-apps-windows-linking) P.S., 在写这篇文章之前,我只是得到了“无法从损坏的文件 0x06 中读取”错误,但是由于某种原因,当我试图获取这个问题的错误日志的副本时,我开始得到上面的这些错误.
请帮忙!谢谢...
好吧,基本上我用有史以来最“程序员”的方式解决了它,我发疯了,删除了整个项目并重新开始,这次确保一切都是 x64 位(我确保它的 64 位之前,但我似乎忽略了一些东西)并确保我逐字逐句地遵循文档,你知道吗,它起作用了!