这句sql语句错在哪里?

INSERT INTO aa VALUES ('aa',';/**/;')

报错:

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '';/**/' at line 1

不知道是是什么原因报这样的错,请大神解答一下

阅读 4.3k
6 个回答

同样好奇,在我的印象中分号、斜杠、星号不是特殊字符,不信可以单独插入

INSERT INTO aa VALUES ('aa',';');
INSERT INTO aa VALUES ('aa','/');
INSERT INTO aa VALUES ('aa','*');

但结合起来为什么就不行了?在测试的时候发现个有意思的例子,

INSERT INTO aa VALUES ('aa',';/**/');

INSERT INTO aa VALUES ('aa','/**/;');

单独执行上面两个sql可以成功,但一起执行就失败了。
测试时的mysql版本5.6.20-log,怀疑是该版本mysql检验正则匹配时有问题,望知情者告知。

我是分割线

看了下后来几个回复的,有的执行成功,还截图了,才恍然大悟,难道不是mysql本身问题,而是数据库管理工具的问题??
马上用命令行再次执行了下,果然可以!
1、命令行方式
clipboard.png

2、之前测试不行是因为在navicat for premium 11中执行的:

clipboard.png

3、今天换了个最新版的12又可以了:

clipboard.png

心塞,具体是什么问题还不清楚

中文字符了吧?

INSERT INTO aa VALUES ('aa','\;\/**\/\;')

mysql> create table t0 (a1 varchar(32),a2 varchar(32)) engine = innodb default charset=utf8;

Query OK, 0 rows affected (0.01 sec)

mysql> insert into t0 VALUES ('aa',';/**/;');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t0;

a1 a2
aa ;/**/;

1 row in set (0.00 sec)

mysql> insert into test VALUES(null,';/**/;',30,'beijing',1);
Query OK, 1 row affected (0.00 sec)

把 ' 改成 ` 试试

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题