mysql开发中文博客:https://imysql.cn/
1、ERROR 1005 (HY000):Can't create table ?errno:121
ERROR 2006 MySQL server has gone away (下面操作也可引起这样的错误)
原因1: 外键冲突。
原因2:
想当然的用把原有数据文件删除,用别的数据库的目录替换的方式把别的数据库的数据导入到自己的数据库中出现了这样的错误。
“在导入数据库的时候报这个错:ERROR 1005 (HY000):Can't create table ?errno:121
121错误:是指你在表空间中巳经有表的定义,但定义文件不存在。发生这种现象的原因很可能是你直接在数据库目录下删除了数据库而不是通过drop database dtb_name或 drop table tbl_name来删除数据库或表。知道了问题出现的原因,解决起来也就容易多了。在mysql shell删除数据库,再重新导入就ok;”
“原因大致是主键必须是唯一的,也就是数据库里可能存在和现还原数据库有重复的地方,a restriction that Foreign Keys should be uniquely named throughout the database ,一个有效的办法就是将原来的数据库清除后再创建还原。
本人这回的原因是新装的mysql的ibdata1备份文件被我换成之前数据库的ibdata1备份文件了,本来想通过这方法来强制还原的,但是没做到,结果用备份sql文件还原以前数据的数据库时也出错,将被替换的ibdata1文件再还原回去即可解决。http://www.jb51.net/article/39282.htm”
2、ERROR 2006 MySQL server has gone away
产生这个问题的原因可能有以下几种情况:
1:服务器关闭连接后,试图向服务器发送查询,这表明必须修改应用逻辑错误;
2:客户端应用运行不同主机,连接至MySQL的主机没有必要的权限;
3:客户端TCP/IP连接超时,这可能是使用了MySQL选项引起的,这种情况增加超时时间可以帮助解决问题;
4:服务器端连接超时和客户端自动重连被关闭;
5:这种情况的解决方案就是用mysql_ping()连接确认自上次以来是否有长时间查询(MyODBC原理),或者设置wait_timeout参数为很高的值,使连接不可能超时;
6:向服务器发送不正确或者太大的查询也会导致这种错误。如果mysqld收到的包太大或者无序,它就认为客户端发生错误而断开连接,如果需要大查询,可以修改max_allowed_packet变量,该变量默认值是1M,在客户端也需要设置最大包的大小;
7:INSERT or REPLACE语句插入大量的行也会引起这种错误,这些语句不考虑插入的行数而发送单一的请求至服务器,因此减少插入的行数可以避免经常发生这种错误;
8:如果解析主机名失败也可能看到这种错误,这是因为MySQL依赖于主机系统解析主机名,但无法知道它是否有效,以MySQL观点来看,在任何网络超时中这种情况都是不易察觉的;
9:如果应用产生子进程,所有子进程都试图使用同样的连接至MySQL服务器,也同样会出现这种错误,可以把不同的子进程用不同的连接来避免这种问题;
10:可以检查mysql服务是否已经死掉,执行重启和检查服务器启动时间。如果客户端连接中断是因为mysqld崩溃和重启,可以集中查找Ping Mysql服务,如果没有连接则重新连接崩溃的原因;
http://haili.me/archives/561.html
centos c++ 找不到头文件mysql.h
c++程序访问mysql报错。
虽然已经装了mysql-libs,还要安装mysql开发包。
yum install mysql-devel
报错,因为php访问mysql的包和系统里已经安装的冲突,按提示执行如下跳过这些包:
yum --skip-broken install mysql-devel
二、关系
mysql-devel 开发用到的库以及包含文件
mysql mysql 客户端
mysql-server 数据库服务器