mysql错误解决方法

2年前 (2016-10-17) admin mysql 0评论 已收录 838℃
      mysql错误解决方法


1、错误代码: 1050 Table 'emp' already exists


    1>错误描述

1 queries executed, 0 success, 1 errors, 0 warnings
 
查询:create table emp( id int(8) primary key not null, ename varchar(20) not null, eage int(3), esex varchar(2) )
 
错误代码: 1050
Table 'emp' already exists
 
执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0.001 sec


    2>错误原因

    重复执行创建数据库表SQL语句

CREATE TABLE emp(
    id INT(8) PRIMARY KEY NOT NULL,
    ename VARCHAR(20) NOT NULL,
    eage INT(3),
    esex VARCHAR(2)
    );


    3>解决办法

(1)不要执行上述SQL

(2)如表有修改,可以先删除表,然后执行上述SQL;或者利用SQL修改表



2、报错

出现: unknown variable ‘sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL,

解决方法:

最后在/etc/my.cnf 中,把

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABL 删掉或者注释掉,发现问题解决了。




3、报错

 mysql的配置文件my.cnf增加log参数文件报错 

在[mysqld]后面增加一行

log=/tmp/mysql.log
然后重启mysql,

shell>service mysql restart

然后报错

MySQL server PID file could not be found![失败]
Starting MySQL.The server quit without updating PID file (/var/lib/mysql/xuyou58.com.pid).[失败]


查看日志文件:
2014-06-26 17:22:59 0 [ERROR] /usr/sbin/mysqld: ambiguous option '--log=/var/lib/mysql/mysql.log' (log-bin, log_slave_updates)
2014-06-26 17:22:59 0 [ERROR] Aborting

查了google,解决方案是目前log参数弃用,改用

general_log=ON
general_log_file=/tmp/mysql.log



4、报错:Warning: Using a password on the command line interface can be insecure.

 解决方法:可以在my.cnf内指定,于是打开我的my.cnf,在[mysqldump]下增加:

[mysqldump]
user=root
password=root
文中说的在[client]下面加也可以,但那样就所有块的操作都能共享了,所以生产环境上为了安全还是尽量分开。
保存退出再dump就ok了。


5、导入表时报错:source .///*.sql

ERROR 1005 (HY000): Can't create table 'zabbix.#sql-abc_61' (errno: 121)

1、表名重复
2、以该名字命名的表之前创建过后来删除了,但是对应的.frm文件还留在磁盘上
3、主键名字在全数据库范围内不是唯一的

解决方法:



6、解决MySQL出现大量unauthenticated user的问题

CSDN
最近发现两台MySQL server在中午的时候忽然(很突然的那种)发飙,不断的挂掉。重启mysql也尽是失败,看mysql的errorlog,只能看到类似如下的信息:
Forcing close of thread 12232 user: 'root'
用mysqladmin 简单的监控了下mysql的情况:
mysqladmin -uroot -p******** status -i 1
发现Queries per second avg只有200左右,可以说很低,但是Threads 确非常不稳定,居然会瞬间升级200以上,一般情况下这个线程这个值都是不会高于5的个位数!
然后继续看
mysqladmin -uroot -p******** processlist
居然有大量的unauthenticated user?? 如下情况
+------+-----------+---------+----+---------+------+-------+------------------+
[root@app028 ~]# mysqladmin -uroot -p************ processlist
+------+-----------+---------+----+---------+------+-------+------------------+
| Id   | User                 | Host               | db | Command | Time | State | Info       |
+------+-----------+---------+----+---------+------+-------+------------------+
| 2007 | unauthenticated user | 192.168.4.29:58519 |    | Connect |     | login | |
| 2008 | unauthenticated user | 192.168.4.29:58553 |    | Connect |     | login | |
| 2009 | unauthenticated user | 192.168.4.29:58571 |    | Connect |     | login | |
| 2010 | unauthenticated user | 192.168.4.29:58577 |    | Connect |     | login | |
| 2011 | unauthenticated user | 192.168.4.29:58579 |    | Connect |     | login | |
| 2012 | unauthenticated user | 192.168.4.29:58589 |    | Connect |     | login | |
google了一下,

发现这算属MySQL的一个bug,不管连接是通过hosts还是ip的方式,MySQL都会对DNS做反查,IP到DNS,由于反查的接续速度过慢(不管是不是isp提供的dns服务器的问题或者其他原因),

大量的查询就难以应付,线程不够用就使劲增加线程,但是却得不到释放,所以MySQL会“假死”。

解决的方案很简单,结束这个反查的过程,禁止任何解析。

打开mysql的配置文件(my.cnf),在[mysqld]下面增加一行:

skip-name-resolve

重新载入配置文件或者重启MySQL服务即可。




7、报错:

2014-08-14 15:28:45 15388 [Note] InnoDB: 5.6.20 started; log sequence number 1661278
2014-08-14 15:28:45 15388 [Note] RSA private key file not found: /home/mysql2015/data//private_key.pem. Some authentication plugins will not work.
2014-08-14 15:28:45 15388 [Note] RSA public key file not found: /home/mysql2015/data//public_key.pem. Some authentication plugins will not work.

解决方法:

处理了一个MySQL Plugin 'FEDERATED' is disabled 的问题,发现日志里还有一个RSA private key file not found的问题,sha256_password这个插件是MySQL5.6内置的,支持更为强大的用户密码加密方式。

解决方法:

openssl genrsa -out mykey.pem 1024
openssl rsa -in mykey.pem -pubout > mykey.pub


chmod 400 mykey.pem
chmod 444 mykey.pub
chown mysql:mysql mykey.pem
chown mysql:mysql mykey.pub


vi my.cnf 在[mysqld]下面加以下两行:
sha256_password_private_key_path=/home/mysql2015/mykey.pem
sha256_password_public_key_path=/home/mysql2015/mykey.pub
保存之后,重启MYSQL服务,日志不再有以下错误了

博主

让学习成为习惯,坚持-共享-开源-自由! 成功者决不放弃,放弃者绝不成功!

相关推荐

嗨、骚年、快来消灭0回复。