SQL 问题总结

SQL 问题总结

目录

一,Mac安装MySQL

二,遇到的报错 ERRORS

三,MySQL ERROR 1064 (42000)

持续更新中...


一,Mac安装MySQL

安装之后出现很多问题,通过终端,服务关不掉,打不开,客户端登录不了。

更改配置文件(亲测有效):

MYSQL=/usr/local/mysql

PATH=$MYSQL/bin:$PATH


更改配置前,提示问题如下:

mysql -u root -p                -- 输入密码错误(密码明明是正确的)

Sorry, try again.

 ERROR! MySQL server PID file could not be found!

$ sudo mysql.server restart

ERROR! The server quit without updating PID file (/usr/local/mysql/data/freevision.local.pid).

$ sudo mysql.server status

ERROR! MySQL is running but PID file could not be found

$ sudo mysql.server start

Starting MySQL ............. ERROR! The server quit without updating PID file (/usr/local/mysql/data/freevision.local.pid).

ERROR 1045 (28000): Access denied for user 'freevision'@'localhost' (using password: NO)

if you lose this password ,please consult the section how to reset the root password in the maysql reference manual.

# 如果您丢失了此密码,请参考maysql参考手册中的“如何重置根密码”一节。

网上找的配置方法之后,以上问题消失(排错真真麻烦);


$ show databases;            --查看数据库列表    

$ show databases;   

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'show databases' at line 3

错误1064 (42000):SQL语法出错;检查MySQL服务器版本对应的手册,在第3行“显示数据库”附近使用正确的语法

 -- 原因可能是因为 空格或 分号非英文状态下,再次输入即可。


二,遇到的报错 ERRORS

2-1:字段不存在ERROR 1054: 表单里创建的字段 不能访问/操作.

mysql> update students set age = 38 where id=1;

ERROR 1054 (42S22): Unknown column 'id' in 'where clause'

此处原因:创建的 字段前面有空格 !!!    正常情况下,字段会左对齐(如: name 和 Field 左对齐).

字段有空格

2-2:参数/值有问题:ERROR 1054

insert into students values(0,’郭靖’,18,175.00,'男',1); 

ERROR 1054 (42S22): Unknown column '’郭靖‘' in 'field list'

插入失败,查看是否为标点问题,是否为字段问题.

此处为标点问题,将 双信号 改为 单引号 即可.


2-3:表已存在:ERROR 1050

ERROR 1050 (42S01): Table 'students' already exists


2-4:服务端连接失败:ERROR 2002 (连接数据库 账号和密码 都正确,依然连接失败;)

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

原因1:服务端没有打开,所以连接失败.

原因2:服务端的配置有问题,打不开,需要重新配置.

注意:SQL服务端 有一个 Start MySQL when your computer starts up.选项(Mac端),勾选之后电脑开机SQL 默认开启,没有选的话,需要手动开启,或者在终端开启.


2-5:group by 操作报错sql_mode=only_full_group_by

MySQL> select count(*) from sc left join course on sc.cid = course.cid group by course.cid;

ERROR GROUP BY clause and contains nonaggregated column 'mysql_test.sc.SId' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:

原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导致报错。 

查询版本mysql> SELECT VERSION() 

显示版本号为: 8.0.20 

1、查看sql_modeSELECT @@sql_mode;

查询出来的值为:ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

2、去掉ONLY_FULL_GROUP_BY,重新设置值。

SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

3,设置报错提示:

ERROR 1231 (42000): Variable 'sql_mode' can't be set to the value of 'NO_AUTO_CREATE_USER'

原因以及解决:8.0以上已经取消了NO_AUTO_CREATE_USER这个关键字,删掉sql语句中的这个关键字,再次设置即可 。

SET @@global.sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

3、上面是改变了全局sql_mode,对于新建的数据库有效。对于已存在的数据库,则需要在对应的数据下执行:

SET sql_mode ='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';


三,MySQL ERROR 1064 (42000)

1,使用了系统保留的关键字,如果非要使用,对关键字家反斜杠:`keyw0rd`

2,没有权限;

3,在给列设置string类型的时候,如果指定列的类型为varchar则需要指定该类型的最大‘容量值‘,若为char类型则不必。

4,创建表字符串类型:

MySQL:name varchar(10)

hive:name string

5,插入数据:

MySQL:insert into student_scores values

注意:insert into table student_scores values //不能带 table。

6,关键字重名

//报错:row_number() over(partition by departmentid,classId order by math) as row_number

//正确:row_number() over(partition by departmentId,classId order by math) as row_num

原因: as row_number 与 row_number() 属于关键字row_number重名;

7,注释不规范

MySQL做注释,#、-- 和注释内容之间需要加空格。否则报错。

ERROR 1064 (42000): xxxxx; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘默认60

-- 注释


问题1:

输入sql语句,以分号结束,发现没有结束,再打回车,分号,还是不完。 各种“退出”exit,quit,bye,均无效 。

原因:引号不对称

解决:加一个单引号,即可执行sql

单引号

问题2:

Mac文本编辑,提示标点不对:

解决:Mac使用文本编辑 SQL语句,可选用 Menio 字体。以防止标点不兼容;




精进有恒!

你可能感兴趣的:(SQL 问题总结)