今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢?

后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区分表名大小写的,哎,弄了那么旧,害死我了。

让MYSQL不区分表名大小写的方法其实很简单:

1.用ROOT登录,修改/etc/my.cnf

2.在[mysqld]下加入一行:lower_case_table_names=1

3.重新启动数据库即可。

1、Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;2、用root帐号登录后,在/etc/my.cnf中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;lower_case_table_names参数详解:lower_case_table_names=0其中0:区分大小写,1:不区分大小写MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:1、数据库名与表名是严格区分大小写的;2、表的别名是严格区分大小写的;3、列名与列的别名在所有的情况下均是忽略大小写的;4、变量名也是严格区分大小写的;MySQL在Windows下都不区分大小写。

mysql默认是对字母的大小写不区分的

mysql> create table t1(-> username varchar(10));Query OK, 0 rows affected (0.09 sec)mysql> insert into t1 values('you'),('You'),('YOU');Query OK, 3 rows affected (0.05 sec)Records: 3 Duplicates: 0 Warnings: 0对这个表,缺省情况下,下面两个查询的结果是一样的:mysql> select * from t1 where username = 'you';+------+| username |+------+| you || You || YOU |+------+3 rows in set (0.00 sec)mysql> select * from t1 where username = 'YOU';+------+| username |+------+| you || You || YOU |+------+3 rows in set (0.00 sec)如果想让MYSQL知道你输入的字母是大写还是小写的,修改表:mysql> alter table t1 change username username varchar(10) binary;Query OK, 3 rows affected (0.20 sec)Records: 3 Duplicates: 0 Warnings: 0

mysql> select * from t1 where username = 'you';+------+| username |+------+| you |+------+1 row in set (0.00 sec)mysql> select * from t1 where username = 'YOU';+------+| username |+------+| YOU |+------+1 row in set (0.00 sec)如果你只是想在SQL语句中实现的话:mysql> select * from t1 where username = binary 'YOU';+------+| username |+------+| YOU |+------+1 row in set (0.02 sec)mysql> select * from t1 where username = binary 'you';+------+| username |+------+| you |+------+1 row in set (0.00 sec)如果不想这么麻烦而想服务一开启就让大小写一致的话:可以修改my.ini或者my.cnf[mysqld]lower_case_table_names=1(0:区分;1:不区分)然后重启MYSQL服务。mysql> show variables like '%case_table%';+------------------------+-------+| Variable_name | Value |+------------------------+-------+| lower_case_table_names | 1 |+------------------------+-------+1 row in set (0.00 sec)注:WINDOWS系统不用修改,系统默认就是1LINUX 系统默认是0。因为LINUX下的脚本都是区分大小写的。

Windows 环境下大小写不敏感CREATE TABLE tab ( id INT AUTO_INCREMENT, val VARCHAR(10), PRIMARY KEY (id));mysql> select * from tab;Empty set (0.00 sec)mysql> select * from Tab;Empty set (0.00 sec)mysql> select * from `Tab`;Empty set (0.00 sec)在MySQL中如何在硬盘上保存和使用表名和数据库名由lower_case_tables_name系统变量确定,可以在启动mysqld时设置。lower_case_tables_name可以采用下面的任一值:值含义0使用CREATE TABLE或CREATE DATABASE语句指定的大写和小写在硬盘上保存表名和数据库名。名称比较对大小写敏感。在Unix系统中的默认设置即如此。请注意如果在大小写不敏感的文件系统上用--lower-case-table-names=0强制设为0,并且使用不同的大小写访问MyISAM表名,会导致索引破坏。1表名在硬盘上以小写保存,名称比较对大小写敏感。MySQL将所有表名转换为小写以便存储和查找。该行为也适合数据库名和表的别名。该值为Windows和Mac OS X系统中的默认值。2表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。名称比较对大小写敏感。注释:只在对大小写不敏感的文件系统上适用! InnoDB表名以小写保存,例如lower_case_tables_name=1。在Windows和Mac OS X中,lower_case_tables_name的 默认值是1。如果只在一个平台上使用MySQL,通常不需要更改lower_case_tables_name变量。然而,如果你想要在对大小写敏感不同的文件系统的平台之间转移表,会遇到困难。例如,在Unix中,my_tables和MY_tables是两个不同的表,但在Windows中,这两个表名相同。要想避免由于数据库或表名的大小写造成的数据转移问题,可使用两个选项: 在任何系统中可以使用lower_case_tables_name=1。使用该选项的不利之处是当使用SHOW TABLES或SHOW DATABASES时,看不出名字原来是用大写还是小写。 在Unix中使用lower_case_tables_name=0,在Windows中使用lower_case_tables_name=2。这样了可以保留数据库名和表名的大小写。不利之处是必须确保在Windows中查询总是用正确大小写引用数据库名和表名。如果将查询转移到Unix中,由于在Unix中大小写很重要,如果大小写不正确,它们不工作。例外:如果你正使用InnoDB表,在任何平台上均应将lower_case_tables_name设置为1,以强制将名转换为小写。请注意在Unix中将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。

用惯了windows下面的不区分大小写的mysql语句,到了linux下面还真的很多不习惯。

在MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。

奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。

要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。

或者也可以强制以-O lower_case_table_names=1参数启动mysqld(如果使用--defaults-file=...\my.cnf参数来读取指定的配置文件启动mysqld的话,你需要在配置文件的[mysqld]区段下增加一行lower_case_table_names=1)。这样MySQL 将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名)。

当你更改这个选项时,你必须在启动mysqld前首先将老的表名转换为小写字母。

换句话说,如果你希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置0:lower_case_table_names=1。否则的话你会发现同样的sqldump脚本在不同的操作系统下最终导入的结果不一样(在Windows下所有的大写字符都变成小写了)。

即:unix下面默认是区分大小写的,而winodws下面是不区分的。为了设置unix下面不区分大小写,要设置unix下面的数据库表名都是小写的,并在配置文件my.conf上面,的mysqld字段增加lower_case_table_name=1,1为不区分大小写,0是区分大小写。。。并/etc/init.d/mysql restart即可。。。

Linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;2、用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小 写;lower_case_table_names参数详解:lower_case_table_names = 0其中 0:区分大小写,1:不区分大小写MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的:1、数据库名与表名是严格区分大小写的;2、 表的别名是严格区分大小写的;3、列名与列的别名在所有的情况下均是忽略大小写的;4、变量名也是严格区分大小写的;MySQL在Windows下都不区 分大小写。3、如果想在查询时区分字段值的大小写,则:字段值需要设置BINARY属性,设置的方法有多种:A、创建时设置:CREATE TABLE T(A VARCHAR(10) BINARY);B、使用alter修改:ALTER TABLE `tablename` MODIFY COLUMN `cloname` VARCHAR(45) BINARY;C、mysql table editor中直接勾选BINARY项。

mysql设置不区分大小写_更改MYSQL数据库不区分大小写表名相关推荐

  1. mysql设置自动递增_《MySQL数据库》约束条件和自增长序列

    一.约束(constraint) 约束就是在表上强制执行的一种校验规则,当执行DML操作时,数据必须符合这些规则,如果不符合,将无法执行. 约束的全称:约束条件,也称之为完整性约束条件.可以保证表中数 ...

  2. mysql设置索引长度_修改Mysql索引长度限制

    mysql 索引过长1071-max key length is 767 byte 问题 create table: Specified key was too long; max key lengt ...

  3. mysql为什么不驼峰_为什么不用驼峰命名创建表名和字段?

    其实,这是一种规范,而不是一种规则.所以你使用驼峰来命名也是可以的,但是我们要避免用驼峰来命名. 不只是数据库,就是平常的程序也是,因为: MYSQL 5.7 FEATURES. THIS MANUA ...

  4. 易语言mysql怎么写字段值_易语言数据库怎么加字段 数据库添加字段说明

    易语言将access数据库作为数据源怎么添加记录到access? .版本 2 .支持库 eDB 数据库连接1.连接Access (取运行目录 () + "数据库名称", " ...

  5. qt中用mysql获取所有的数据库、数据库中的表名

    mysql中获取所有数据库用命令:show databases(包含视图) 查看数据库的所有表名用命令:use database(数据库名);show tables; 而在qt中使用mysql获取数据 ...

  6. mysql desc 显示备注_MySQL_Mysql中返回一个数据库的所有表名,列名数据类型备注,desc 表名; show columns from 表名; d - phpStudy...

    Mysql中返回一个数据库的所有表名,列名数据类型备注 desc 表名; show columns from 表名; describe 表名; show create table 表名; use in ...

  7. (转)【mysql元数据库】使用information_schema.tables查询数据库和数据表信息 ---数据记录大小统计...

    转:https://www.cnblogs.com/ssslinppp/p/6178636.html https://segmentfault.com/q/1010000007268994?_ea=1 ...

  8. MySql 查询数据库中所有表名

    MySql 查询数据库中所有表名 查询数据库中所有表名 select table_name from information_schema.tables where table_schema='csd ...

  9. excel查询mysql数据库表,excel创建数据表/查询mysql数据库中所有表名

    excel两个表格,数据库表与专门查询该数据库信息的表.在查询表中以多个项目进行查询符合条件的数据. 可以用"筛选"这个功能,在菜单里,对两个列进行筛选,符合条件的就会显示出来.很 ...

  10. vb 读取mysql所有表名_VB 读取ACCESS数据库中所有表名和指定表字段名.doc

    VB 读取ACCESS数据库中所有表名和指定表字段名 托束显疫面绰么蚂扛沁米衅居鸳辗熊踌薄舱杂们帖婉珍抓津担庐撕枪呻头胀亨短宛溅锭语氏遣搀赠摩紧茧综逾颂备呛庞枷脓移厚醛仕恬浸值胶碟亦短咳腥钥捎魄朗氟商 ...

最新文章

  1. 通过shell将*.txt文本内容批量录入mysql
  2. xcode添加Cocos2d
  3. Spring Boot快速搭建入门程序
  4. Boost:基于不同容器的有界缓冲区比较
  5. c语言实验5上机刘若慧2017年,《《 C语言程序设计案例教程》》.ppt
  6. HDU 1233 还是畅通工程(最小生成树)
  7. Css 3d轮播样式
  8. 论文解读丨空洞卷积框架搜索
  9. CentOS 6.0 + Zabbix 1.8.5 服务器端安装
  10. 网站服务器无返回数据,服务器无返回数据处理
  11. 用计算机找到自己的另一半,生辰八字算婚期计算器 免费算个人感情婚姻的另一半...
  12. VTT字幕文件处理(vi + sed + awk)
  13. 软件开发人员如何自我学习?
  14. C#,CAD二次开发,基于参考面参考点计算一个点的坐标
  15. windows测试linux端口,windows、Linux 测试服务器、电脑的某些个端口是否打开
  16. 大前端CPU优化技术--NEON intrinsics进阶
  17. 潜在狄利克雷分配(LDA)(latent Dirichlet allocation)
  18. linux服务器怎么搭建简单的网站?linux搭建网站教程
  19. win7 打开 计算机 慢,Win7电脑打开网页速度慢怎么办?
  20. 考研这么累,能支持你坚持到底的是什么?

热门文章

  1. 2022香港ib成绩公布,实在是太高了
  2. wkwebview 下移20像素_Cyclone2D编辑器(通用版本) 使用手册
  3. mysql数据库表关联和django_django 数据库表关联
  4. 将两个字符串连接起来,不要用strcat函数
  5. 计算机进制转换练习,二进制十进制八进制十六进制转换练习题.docx
  6. win10 u盘 修复计算机,怎么用u盘修复windows10专业版系统
  7. Hexo 个人博客搭建完整版笔记
  8. 网站一直不被收录怎么办,让网站收录更好的五个方法
  9. CSS等高布局的7种方式
  10. Adobe Photoshop 7.0.1 简体中文版注册码