linux服务器设置mysql5.7版本数据库忽略数据表名大小写
最初的问题vue前端能够发送正确的请求路径,后端也设置了允许跨域。请求时出现 net::ERR_CONNECTION_REFUSED 错误。但是我的本地是没有问题的,使用如下测试代码:<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></scr...
最初的问题
vue前端能够发送正确的请求路径,后端也设置了允许跨域。
请求时出现 net::ERR_CONNECTION_REFUSED 错误。但是我的本地是没有问题的,使用如下测试代码:
<script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
$(function(){
$.ajax({
// url:"http://172.17.172.45:8089/account/admin/consumeRecord/getlist",
// url:"http://172.17.172.45:8089/account/admin/consumeRecord/getlist", ok
url:"http://172.17.172.45:8089/account/doLogin",
data:JSON.stringify({account: "pan", password: "123456"}),
dataType: "json", // 表示返回类型
type:"POST", // 请求方式
crossDomain:true, //是否跨域 可后端设置
contentType:"application/json;charset=UTF-8",
//contentType: "application/x-www-form-urlencoded",
success:function(data){
console.log(data);
}
});
});
</script>
当我访问本地时,可以正常的返回登陆结果。但是访问远程服务器部署的地址就提示拒绝连接。
我是使用微服务类型进行启动springboot项目的。
命令如下:
nohup java -jar account.jar &
这个命令执行后就可以关闭窗口,进程会在后台执行,另外也不会有日志出现,这就导致了无法知道在部署过程中产生了什么错误。之后改变了执行方法。
java -jar account.jar
从而可以观察到访问过程中会出现哪些错误。
从提示错误中看到说无法找到account.T_SYS_USER,但是我的数据库中明明有这个表。把执行的查询语句替换,在navicate中执行,大写的表名不行,然后将表名改成小写,再执行sql语句,可以进行查询。所以问题就是linux上对表名大小写敏感。
解决方法
故要做的就是配置MySQL,让mysql忽略大小写。
查看当前的mysql配置是否忽略大小写:
- 登陆mysql
- show variables like “%case%”;
***************************************
mysql> show variables like "%case%";
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)
******************************************
lower_case_table_names=0说明对表名大小写敏感,故需要进行配置。
mysql 5.6版本参考
我的mysql版本是5.7,故位置有些不一样。
位置可以使用locate命令进行查找,大致在安装目录下。
1.进入修改配置文件
vim /etc/mysql/mysql.conf.d/mysql.cnf
2.在[mysqld]下加入一行:lower_case_table_names=1
备注:0,区分大小写; 1,不区分
3.重新启动数据库即可
sudo /etc/init.d/mysql restart
这时候就可以通过ajax正常的访问到登陆方法了。使用vue也可以正常登陆了。
问题总结
1.项目部署时应该先在控制台中进行输出日志,保证基本方法请求没问题。
2.linux上的mysql是对大小写敏感的,故在后端写代码时对表名的命名最好保持一致,不会导致测试时有的接口可以有的不可以,还不知道错误在哪。
3.本次部署对mapper.xml中写的实体类别名没有识别出来,最后是直接指定了具体的路径作为别名(可能没有配置成功)。
更多推荐
所有评论(0)