Mysql Sql语句空格字符串等问题

Mysql Sql语句空格字符串等问题

1、问题描述

Mysql 里面SQL语句空格、字符串问题,你发现不了,但是就是运行报错。不服?来我们上源码。先来看一个删除表的。

DROP TABLE IF EXISTS 'user';

在这里插入图片描述
堂堂正正删除表,没毛病,运行。

1 queries executed, 0 success, 1 errors, 0 warnings

查询:DROP TABLE IF EXISTS 'user'

错误代码: 1064
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 ''user'' at line 1

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

在这里插入图片描述
什么鬼。这里user不能用字符串的引号。只能用mysql自带的引号。

DROP TABLE IF EXISTS `user`;

在这里插入图片描述

对比下这两种写法在SQLYog中的效果。执行SQL语句。

1 queries executed, 1 success, 0 errors, 1 warnings

查询:DROP TABLE IF EXISTS `user`0 行受到影响, 1 个警告

执行耗时   : 0 sec
传送时间   : 1.183 sec
总耗时      : 1.184 sec

注意:要查看所有警告的完整列表,请启用 工具 -> 首选项 -> 常规 -> 在信息选项卡下显示警告

在这里插入图片描述
再来个大招,关于空格的。


CREATE TABLE `role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

也是堂堂正正建立一个表。没毛病。执行SQL语句。

1 queries executed, 0 success, 1 errors, 0 warnings

查询:CREATE TABLE `role` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,   `name` varchar(255) COLLATE utf8_bin NOT NULL...

错误代码: 1064
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 'CREATE TABLE `role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `n' at line 1

执行耗时   : 0 sec
传送时间   : 0 sec
总耗时      : 0 sec

在这里插入图片描述
我的个亲娘嘞!还有没有王法。是的就是空格的问题。我们拿到记事本过滤一下再拷贝回来执行SQL语句。

CREATE TABLE role(
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(255) COLLATE utf8_bin NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=INNODB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

大家肉眼看看和上面有什么区别,看出来的话,你是我大哥,我水土不服舅服你。执行SQL语句。

1 queries executed, 1 success, 0 errors, 0 warnings

查询:CREATE TABLE role( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8_bin NOT NULL, PRIMARY KEY (`id`) ) ...0 行受到影响

执行耗时   : 0.027 sec
传送时间   : 1.171 sec
总耗时      : 1.199 sec

在这里插入图片描述
看似一毛一样,竟然执行成功了。我们来看看SQLyog中两段代码的差别。

在这里插入图片描述

确实空格不同,颜色也不同。接下来看看Navicat的,一毛一样,还是SQLyog好啊。

在这里插入图片描述
遇到这样的问题想必各位会直接哭晕在厕所了。不说了,我刚刚醒。

2、总结

  书上的代码直接运行绝大部分是对的,但是总有一些软件的更新使得作者无能为力。之前的API是对的,但是之后就废弃了或修改了是常有的事。所以我们需要跟踪源代码。这只是一个小小的问题,如果没有前辈的无私奉献,很难想象我们自己一天能学到多少内容。感谢各位前辈的辛勤付出,让我们少走了很多的弯路!

点个赞再走呗!欢迎留言哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章