linux 下C++ 连接mysql 数据库

资料推荐这个:MySQL C API programming tutorial

环境为ubuntu 14.04 lts

需要安装mysql 和mysql 开发包

sudo apt-get install libmysqlclient15-dev  mysql-server mysql-client

先在mysql  中建立test数据库和test表格

 

然后用如下cpp代码连接

编译:

此次从mysql中查询,发现成功插入了一条数据.

mysql 出现 innoDB: Cannot allocate memory for the buffer pool 的解决办法

emmm,博客的数据库又挂了。

看了下log,发现innoDB: Cannot allocate memory for the buffer pool 的error

查了下,貌似是内存不够了? orz

用free 命令看了下,阿里云ecs貌似是默认没有swap分区的。

于是参考云服务器 ECS Linux SWAP 配置概要说明 

设置了swap分区。看下还会不会挂orz

database connection error 的解决方案

其实 东西之前出现过…不过好像重启一下服务器就可以了?

这次比较麻烦。

一开始我是直接google 了这条错误信息,结果答案五花八门,或者说…可能的原因非常多。

排查了几个。。。还是没有搞定。。。

突然想到。。。。为何不直接看log….我好傻啊。

发现是说一个表挂掉了。。。。

然后在SO上看到这个stackoverflow

然后惊喜得发现完全不记得数据库密码是啥了…毕竟搭博客的时候我对这些完全没概念…

然后在my.cnf配置文件 加一行 skip-grant-tables  具体位置是在/etc/my.cnf

这样就可以跳过密码直接登录数据库。

qq%e5%9b%be%e7%89%8720161010183341

查了下果然有问题。。。

然后用 repair table table_name; 命令修复。

注意table_name外面没有引号啊,中括号之类乱七八糟的2333.

然后再check,发现少了条warning,就是日志里error的那条。

尝试了下访问博客。。。发现已经可以了。。感动到哭。。。

 

感觉这次学到的最主要的事情是。。。出问题直接去找log。。。。不要从表面的症状来找问题。。。。嗯。感动。