mysql在更改lower_case_table_names=1后,原大写数据表查找失败

mysql在更改lower_case_table_names=1后,原大写数据表查找失败,第1张

lower_case_table_names=1会让mysql不区分小写表名的呀,然后你可以使用

alter table 表名 rename to 新表名

来进行修改表名既可以解决问题,然后再重启一遍,这是最好的办法。

是有区分的早先一直是在库中建在库中用,结果这次用pd9生成时忘了把一个属性关闭了,居然每次都要在数据库的表前指名“表空间""表名"的形式而且必须加引号,必须记录大小写,否则就告诉我说没有视图,郁闷至死

于是查了相关网页,答案是有区分的,但是要在建表的时候强制区分,既所说的建表时用双引号。

否则oracle默认的没有区分,建表你用小写,没关系,oracle自动转成大写,再调用时用大小写都可以。如果建表时强制大小写的话,那就要用到upper,lower函数来转化。

至于表中所存的数据,还是有区分的,存入大写就是大写,存入小写就是小写,查询时要注意的。记住了下次一定处理,可怜呀,要在几百个表里一个个的把字段上的“去掉引号”,还要用alter

table

name1

rename

to

name2

!的方式去掉数据库表名称上的引号(对于这个name2的名称不用加名字空间了的:))

Windows 环境下大小写不敏感

CREATE TABLE tab (

id INT AUTO_INCREMENT,

val VARCHAR(10),

PRIMARY KEY (id)

);

mysql> select from tab;

Empty set (000 sec)

mysql> select from Tab;

Empty set (000 sec)

mysql> select from `Tab`;

Empty set (000 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之前,必须先将旧的数据库名和表名转换为小写。

你说的是mysql表名大小写配置???

linux在:/etc/mycnf

# The MySQL server

#

[mysqld]

# generic configuration options

port = 3306

socket = /home/mysql/data/mysqlsock

lower_case_table_names=1:忽略数据库表名大小写,=0则不忽略

修改后重启服务:/etc/initd/mysql restart

注:若之前的表名是大写,则在重启服务前要将表名更改为小写,否则会出现找不到数据表报错

LCASE() 函数

LCASE() 函数把字段的值转换为小写。

具体语法参考:

-from 树懒学堂

在 SQL Server 的使用语法:

shulanxt

整理不易,希望对楼主有所帮助,如果需要实例可以到相关的教程站点上面去熟悉和学习一下~

重启mysql

show global variables like '%lower_case%';

没有生效! 且查了很多文章都是来回拷贝,无有用信息

将参数配置在docker run 中有效

注意/说明

1对于已经在运行的mysql docker,没有办法, 备份数据库 再docker run 一个

2lower_case_table_names 在 docker run 参数中变成了:lower-case-table-names

3可能类似的参数都需要这种方式才能成功

4本次问题主要是为了运行开源代码,并不是推荐使用mysql 的"忽略大小写"

以上就是关于mysql在更改lower_case_table_names=1后,原大写数据表查找失败全部的内容,包括:mysql在更改lower_case_table_names=1后,原大写数据表查找失败、oracle数据库区分大小写吗、如何让mysql查看表不区分大小写等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9325316.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存