CentOS下无法正常获取MySQL数据库表数据的问题
目前技术框架使用JSF(richfaces、facelets)+Spring+JPA(OpenJPA),不使用数据库依赖的触发器或存储过程,所有业务逻辑在web服务器上执行,因此数据库基本不用考虑移植问题。但是本来在windows下运行正常的系统,在linux下却没法获取一些表的内容。由于数据库的初始化,最初只是体现在几个需要手工维护的表数据上,最终却发现原来是因为数据库表名大小写的问题!
具体操作过程:
1、在windows下,使用MySQL的客户端工具“Navicat”,将当前的数据库导出到test.sql文件中。说明:导出的.sql文件中,所有的表名都是小写。
2、将导出的.sql文件拷贝至linux下,导入需要使用的数据库中
3、启动web服务器,访问服务。问题出现:许多表无法访问。
4、在mysql中使用“show tables;”命令,发现表名有重复,重复的表名区别在于大小写,大写的表名与对应的实体bean名相同。找到问题:表名大小写造成的数据无法访问。 (linux 下的 MySQL 安装完后,默认区分表名的大小写,不区分列名的大小写;Windows下默认不区分大小写 )
上述问题有两种解决方案:
● 在JPA的实体bean的声明中,使用“Table”的“name”属性,指定表名,表名尽量全部使用小写,不同单词之间使用下划线连接
例如:
@Table(name="sys_user")● 使用Linux下MySQL的相关参数,使MySQL不区分大小写( lower_case_table_names=1 )
上述两种方法,第一种是较为通用的解决方案,但是需要开发人员更改全部的实体bean,然后重新编译;第二种方案适合于系统已经进入生产环境的状况,并且对如何修改linux下的MySQL配置需要一定的专业知识及经验,对实施人员技术要求较高。
关于如何修改CentOS下的MySQL不区分大小写的具体操作方法:
用 root 帐号登录后,在 /etc/my.cnf 中的 [mysqld] 后添加添加 lower_case_table_names=1 ,重启Mysqld 服务。服务重新启动之后,已设置成功:不区分表名的大小写
关于lower_case_table_names 参数详解: lower_case_table_names参数有两个值:[0、1 ]其中0 :区分大小写,1 :不区分大小写
补充说明:
关于持久层,使用Spring自动生成的DDL来创建对应的持久层数据库表及索引等数据,简化实施工作的复杂度
====================================分割线================================
最新内容请见作者的GitHub页:http://qaseven.github.io/
[CentOS Python系列] 四.阿里云服务器CentOS连接远程MySQL数据库及pymsql 本篇文章讲解阿里云服务器CentOS系统连接远程MySQL数据库及配置过程,同时教大家如何编写Python操作MySQL数据库的基础代码,基础性文章,希望您喜欢。
[CentOS Python系列] 三.阿里云MySQL数据库开启配置及SQL语句基础知识 本篇文章讲解阿里云服务器CentOS系统下的MySQL数据库开启及配置过程,同时教大家如何编写Python操作MySQL数据库的基础代码,为后面的存储至服务器打下基础。
教你如何在阿里云服务器上安装Mysql数据库(mysql5.7.23+centos) 对于一个建站新手来讲,最重要的莫过于2件事 1.时间效率 2.性价比 换句话讲,对于非专业选手,在整个建站过程,如何省时省力,用相对简单的方式,花更少的钱建好网站是关键。 基于上述,给大家带来一版适合新手的建站指南,供大家参考。
Linux centos 7/ubantu下: 用 C 语言连接 MySQL数据库 前言:最近用IPC、socket做ATM、聊天项目,考虑到需要用到数据库,所以总结一下centos、ubantu环境下怎么用C语言操作数据库,例如常见的增删改查等! 一、Centos环境安装mysql 要想进行 C 语言连接MySQL数据库的操作,那么首先要安装数据库,安装数据库挺简单的,这里暂不介绍了。
相关文章
- 比Vertica快5倍,比Hive快279倍,比MySQL快801倍!猜猜它是谁?
- mysql binlog 参数_MySQL Binlog常用参数
- 基于CentOS的MySQL学习补充四--使用Shell批量从CSV文件里插入数据到数据表
- crly-shell centos/windows服务器,Mysql数据库表结构损坏
- CentOS 7 上编译安装MySQL 5.6.23
- mysql远程连接 Host * is not allowed to connect to this MySQL server
- MySQL使用初步—mysql数据库的基本命令
- Centos安装mysql并进行命令补全
- MySQL mysqldump备份数据库及恢复数据库(mysql命令)
- Mysql mysql lost connection to server during query 问题解决方法
- Mysql视图介绍
- [mysql]MySQL数据库如何导出
- MySQL运维之---mysqldump备份、select...into outfile、mysql -e 等工具的使用
- python操作mysql数据库系列-操作MySql数据库(四)
- python操作mysql数据库系列-操作MySql数据库(一)
- centos mySql 安装
- mysql—MySQL数据库中10位或13位时间戳和标准时间相互转换
- PHP+Mysql基于事务处理实现转账功能的方法
- Centos 7上安装MySQL 5.7.37详细图文教程
- MySQL数据库如何做好优化
- docker 的centos容器搭建javaweb环境时mysql部分遇到的问题
- python封装一个工具类 ,对MySQL数据库增删改查,可多字段动态插入mysql数据库中