Mysql常见问题及解决办法

基本操作
错误日志:位于data文件夹下,文件名为 计算机名.err 和 mysql_error.log

[1064]:You have an error in your SQL syntax

译自:inmotionhosting

错误产生的原因:
1、使用了Mysql中的保留字或关键字。

ALTER TABLE `user` CHANGE uname name VARCHAR(20)

如上例中,name是Mysql的保留字,使用时应写作`name`。
2、缺少必要数据

SELECT * from students WHERE studentID = 

3、命令拼写错误

UDPATE table1 SET id = 0;

[2003]:Can't connect to MySQL server on 'localhost'
(10061)
mysqld -nt -remove:移除MySQL服务
mysqld -nt -install:注册MySQL服务
(1067)
MySQL服务无法正常启动。通过命令行(管理员权限)启动时响应如下:

>net start mysql
mysql 服务正在启动 ...
mysql 服务无法启动。
系统错误 。
1067
发生系统错误。
进程意外终止。

查看错误日志:data/mysql_error.log

2017-08-23 09:18:39 1894  InnoDB: Error: unable to create temporary file; errno: 2
2017-08-23 09:18:39 4508 [ERROR] Plugin 'InnoDB' init function returned error.
2017-08-23 09:18:39 4508 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-08-23 09:18:39 4508 [ERROR] D:\MySQL\mysql5.6\bin\mysqld.exe: unknown variable 'default-file=D:\MySQL\mysql5.6\my.ini'

共有两个问题:
1.不能生成临时文件
2.未知变量

先解决第二个问题: unknown variable
查看Mysql5.6的手册 windows-start-service 找到其中的示例如下:

C:\> "C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld"
          --install MySQL --defaults-file=C:\my-opts.cnf

对比发现误将 defaults 写成 default
修改并再次启动mysql服务查看错误日志:

2017-08-23 09:20:14 100c  InnoDB: Error: unable to create temporary file; errno: 2
2017-08-23 09:20:14 2640 [ERROR] Plugin 'InnoDB' init function returned error.
2017-08-23 09:20:14 2640 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2017-08-23 09:20:14 2640 [ERROR] Unknown/unsupported storage engine: InnoDB
2017-08-23 09:20:14 2640 [ERROR] Aborting

查看Mysql5.6的手册 temporary-files.html

On Windows, MySQL checks in order the values of the TMPDIR, TEMP, and TMP environment variables. For the first one found to be set, MySQL uses it and does not check those remaining. If none of TMPDIR, TEMP, or TMP are set, MySQL uses the Windows system default, which is usually C:\windows\temp.

If the file system containing your temporary file directory is too small, you can use the mysqld --tmpdir option to specify a directory in a file system where you have enough space. On replication slaves, you can use --slave-load-tmpdir to specify a separate directory for holding temporary files when replicating LOAD DATA INFILE statements.

通过以上两段内容可以知道,在my.ini中可以不指定tmpdir,所以注释掉my.ini中如下定义:

tmpdir = "D:/MySQL/mysql5.6/data/tmp"

再次启动mysql服务,服务可以正常启动。

无法连接到 MySQL 服务器,可能的情况为:
1、MySQL 服务没有正常启动,如无可用磁盘空间、my.ini中设置错误等;
2、MySQL 服务器资源紧张,导致无法连接。

中文乱码问题
问题描述:使用insert对数据表插入数据时中文字符显示结果为问号(?)

/*查看Mysql编码情况,查询结果与Mysql安装时的设置有关*/
SHOW VARIABLES LIKE 'char%'  

结果:

Variable_name Value
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1

由此可知,乱码问题是由character_set_server不是utf8引起的。所以,修改my.ini文件中关于server编码方式的设置:

[mysqld]
## UTF 8 Settings
#字符序:ci表示大小写不敏感
collation_server=utf8_unicode_ci
#字符集
character_set_server=utf8

再次查询,character_set_server已经更改为utf8。

你可能感兴趣的:(Mysql常见问题及解决办法)