您的位置:首页 > 数据库 > MySQL

MySQL数据调用存储过程权限问题以及sql_mode问题

2018-09-13 21:29 447 查看

今天在运行一个项目的时候,总是报了一个错误,如下:

从错误中可以发现,是在连接数据库找不到qixiudev1这个用户,但是数据库是使用root用户连接,而且也没有创建qixiudev1这个用户,最后排查,是在项目启动的时候调用了一个存储过程,这个存储过程,但是这个存储过程也不是root用户创建的,因为项目重构,数据库直接拷贝的是之前的数据库,之前数据库用户为qixiudev1,创建的存储过程,最后猜想可能是这个原因,然后将原有的存储过程删除后,重新使用root创建了一个相同的存储过程,问题解决。
后来在调用存储过程的时候又出现了一个错误:

关于sql_mode的问题,上网百度了一下,说是要去掉sql_mode中的一个ONLY_FULL_GROUP_BY属性 ,使用一下命令查看sql_mode中的属性:

show VARIABLES like '%sql_mode%'

修改sql_mode的属性使用如下语句:

set @@sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

修改完成之后,发现还是报这个错,重启数据库发现sql_mode又变回原来的值了,最后从网上0才知道,这个修改只是会话级别的,重启数据库肯定会变回原来的值,网上提供的方法是修改数据的配置。
因为我这边链接的是远程,无法修改,于是这样操作,才解决:先sql_mode的那个属性去掉,去掉之后再创建这个存储过程,然后问题最终得到解决。
注意:存储过程要在修改之后就创建才行。

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: