TinyWebServer
TinyWebServer copied to clipboard
使用 MySQL 8.0 执行 ./server 日志出现 MySQL Error
README 上推荐的 MySQL 版本是 5.7,但是自己虚拟机上的版本是 8.0,踩了个坑,说一下我的解决办法:
第一次运行的时候直接退出了,日志只显示了 MySQL Error 没有更多的信息,然后看了看其他的 Issues 把 localhost
改为 127.0.0.1
,依然是 MySQL Error。
查看 sql_connection_pool.cpp
,日志输出的内容是由于 mysql_real_connect()
这个函数返回为空导致。因为不知道具体错误是什么比较头疼,于是尝试把 MySQL 的错误直接打印出来:
// 稍微修改一下,不要让 mysql_real_connect 的返回值直接传给 conn
// con = mysql_real_connect(con, url.c_str(), User.c_str(), PassWord.c_str(), DBName.c_str(), Port, NULL, 0);
// if (con == NULL)
// {
// LOG_ERROR("MySQL Error2");
// exit(1);
// }
if (!mysql_real_connect(con, url.c_str(), User.c_str(), PassWord.c_str(), DBName.c_str(), Port, NULL, 0))
{
cout << mysql_errno(con) << " " << mysql_error(con) << endl;
exit(1);
}
于是我得到了 Authentication plugin ‘caching_sha2_password’ cannot be loaded
,错误码是 2059(没仔细琢磨,应该是 MySQL 8.0 才会遇到),可以自己搜一下解决方案,以下是我的办法:
然后就可以了。
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' 这个错误 该怎么办呢 用宝塔安装的 mysql
我手动建了个软连接 /tmp/mysqld.sock 到 /var/run/mysqld/mysqld.sock
thanks,救命了
README 上推荐的 MySQL 版本是 5.7,但是自己虚拟机上的版本是 8.0,踩了个坑,说一下我的解决办法:
第一次运行的时候直接退出了,日志只显示了 MySQL Error 没有更多的信息,然后看了看其他的 Issues 把
localhost
改为127.0.0.1
,依然是 MySQL Error。查看
sql_connection_pool.cpp
,日志输出的内容是由于mysql_real_connect()
这个函数返回为空导致。因为不知道具体错误是什么比较头疼,于是尝试把 MySQL 的错误直接打印出来:// 稍微修改一下,不要让 mysql_real_connect 的返回值直接传给 conn // con = mysql_real_connect(con, url.c_str(), User.c_str(), PassWord.c_str(), DBName.c_str(), Port, NULL, 0); // if (con == NULL) // { // LOG_ERROR("MySQL Error2"); // exit(1); // } if (!mysql_real_connect(con, url.c_str(), User.c_str(), PassWord.c_str(), DBName.c_str(), Port, NULL, 0)) { cout << mysql_errno(con) << " " << mysql_error(con) << endl; exit(1); }
于是我得到了
Authentication plugin ‘caching_sha2_password’ cannot be loaded
,错误码是 2059(没仔细琢磨,应该是 MySQL 8.0 才会遇到),可以自己搜一下解决方案,以下是我的办法:然后就可以了。
不愧是大佬,我就是靠你这个搞定了
README 上推荐的 MySQL 版本是 5.7,但是自己虚拟机上的版本是 8.0,踩了个坑,说一下我的解决办法:
第一次运行的时候直接退出了,日志只显示了 MySQL Error 没有更多的信息,然后看了看其他的 Issues 把
localhost
改为127.0.0.1
,依然是 MySQL Error。查看
sql_connection_pool.cpp
,日志输出的内容是由于mysql_real_connect()
这个函数返回为空导致。因为不知道具体错误是什么比较头疼,于是尝试把 MySQL 的错误直接打印出来:// 稍微修改一下,不要让 mysql_real_connect 的返回值直接传给 conn // con = mysql_real_connect(con, url.c_str(), User.c_str(), PassWord.c_str(), DBName.c_str(), Port, NULL, 0); // if (con == NULL) // { // LOG_ERROR("MySQL Error2"); // exit(1); // } if (!mysql_real_connect(con, url.c_str(), User.c_str(), PassWord.c_str(), DBName.c_str(), Port, NULL, 0)) { cout << mysql_errno(con) << " " << mysql_error(con) << endl; exit(1); }
于是我得到了
Authentication plugin ‘caching_sha2_password’ cannot be loaded
,错误码是 2059(没仔细琢磨,应该是 MySQL 8.0 才会遇到),可以自己搜一下解决方案,以下是我的办法:然后就可以了。
根据打印日志输出的错误,进一步调试。