网站首页 > 教程文章 正文
我们一般在Windows系统开发程序并进行功能测试,如果上线的时候选择Windows服务器的话,是什么问题都没有。但是当选择Linux系统的时候,就必须注意Linux系统是严格的区别文字大小。
- Windows系统:不区别英文字母的大小写(Windows文件系统不支持大小写应该是更正确的说法)
- Linux系统:区别英文字母的大小写
从Windows迁移到Linux,突然无法读取数据?
有个在Windows运行稳定的系统,随着Windows2003的技术支持结束,决定迁移到Linux系统。
- 系统:Windows2003(32位)
- Web:Apache
- 程序:PHP
- 数据库:MySQL
这次迁移到Linux系统的原因有2个,一个是Windows2008开始最低配置也需要2核2GB,另外一个是公司里来个一个Linux高手。
系统迁移的一般流程如下。
- 新购一台服务器(推荐使用按量付费的云主机,购买物理机会增加固定资产)
- 在新购的服务器,搭建环境(Apache,PHP,MySQL,FTP…)
- 把现行服务器的数据库数据,导入到新服务器
- 把程序上传到新服务器
- 在新服务器进行功能测试
- 如果功能没有问题的话,再次把现行服务器的数据迁移到新服务器
- 域名解析,就基本大功告成了
在第5个步骤发现无法读取一部分数据。
为什么在Windows能正常运行的程序和数据库,在Linux就会出现问题呢。这时一般会怀疑系统环境的问题,因为程序和数据库是一样的。
然而其实是英文字母大小写导致的结果。
比如在首页调取数据库数据的SQL文如下。
SELECT user_name,id from User;
User表在Windows系统上的Table名为user,因为不区别英文字母大小写所以没问题。
而在Linux会怎么样呢?
迁移过来的Table名是user,而在SQL文里指定的是User表。别忘了这家伙(Linux)区别英文字母大小写,因此会提示该表(User表)不存在。
解决方法
大概有3种解决方法,第一个是修改数据库的Table名,第二个是修改程序,第三个是修改MySQL的参数。
第一和第二,就无需多做说明了,而第三种方法是利用MySQL参数lower_case_table_names。
lower_case_table_names
参数lower_case_table_names是,在MySQL里怎么区别Table英文字母大小的,默认是0。
- 0:区别大小写
- 1:不区别大小写(Table名以小写保存)
- 2:不区别大小写(Table名以原来的大小写保存)
这样一来就简单了,可以让MySQL不区别Table名的大小写。在/etc/my.cnf(yum安装时的默认路径)文件的[mysqld]下面添加lower_case_table_names = 1就可以了。
[mysqld]
...
lower_case_table_names = 1
...
修改MySQL参数之后,重启一下数据库。
猜你喜欢
- 2025-03-14 CAS单点登录(第7版)6.认证(cas单点退出)
- 2025-03-14 Dockerfile构建mysql8.0.27数据库
- 2025-03-14 Docker篇(五):容器之间该如何通讯?
- 2025-03-14 MySql高可用集群MySQL Router负载均衡读写分离
- 2025-03-14 MySQL MGR集群原理及实践(mysql集群架构)
- 2025-03-14 「原创」基于CentOS环境下,LNMP+REDIS+YAF+Java环境搭建
- 2025-03-14 MySQL系列-源码编译安装(v8.0.25)
- 2025-03-14 MySQL海量数据优化(理论+实战)(mysql数据库优化方案)
- 2025-03-14 RxSqlUtils(base R2dbc)(r2dbc-mysql)
- 2025-03-14 《基于Docker的MySQL主从复制:快速搭建高可用从库》
- 最近发表
-
- 绝区零:公测必看!300菲林兑换码、萌新补给一览!切勿踩坑!
- 事半功倍 轻松制作可交互移动原型
- LOL英雄联盟美服注册教材 教你玩转美服
- 「正点原子Linux连载」第五十八章Linux INPUT子系统实验(一)
- 如何轻松薅Cursor羊毛:用免手机号邮箱快速注册
- C/C++基础语法复习(一):C++与C语言的区别,主要有这些
- 永久免费的高配容器Clawcloud,超爽体验!
- Spaceship低价注册域名 | 每年5元不到 | XYZ域名 | 托管cloudflare
- 云杉网络DeepFlow基于Free5GC的方案示例
- alma8飞速搭建zabbix6、微信报警、windows、linux、交换机监控
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- md5 sha1 (32)
- mybatis plus page (35)
- semaphore 使用详解 (32)
- update from 语句 (32)
- vue @scroll (38)
- 堆栈区别 (33)
- 在线子域名爆破 (32)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)