前言: 一般在数据库使用规范中,我们都会看到这么一条:库名及表名一律使用小写英文。你有没有思考过,为什么推荐使用小写呢?库表名是否应该区分大小写呢?带着这些疑问,我们一起来看下本篇文章。...1.决定大小写是否敏感的参数 在 MySQL 中,数据库与 data 目录中的目录相对应。数据库中的每个表都对应于数据库目录中的至少一个文件(可能是多个文件,具体取决于存储引擎)。...默认情况下,库表名在 Windows 系统下是不区分大小写的,而在 Linux 系统下是区分大小写的。列名,索引名,存储过程、函数及事件名称在任何操作系统下都不区分大小写,列别名也不区分大小写。...MySQL 在存储和查找时将所有表名转换为小写。此行为也适用于数据库名称和表别名。 2 库表名以创建语句中指定的字母大小写存储在磁盘上,但是 MySQL 在查找时将它们转换为小写。...通过以上实验我们发现 lower_case_table_names 参数设为 0 时,MySQL 库表名是严格区分大小写的,而且表别名同样区分大小写但列名不区分大小写,查询时也需要严格按照大小写来书写
在linux环境下表名是区分大小写的 问题 执行SHOW VARIABLES LIKE '%lowercasetable_names%' 输出结果: ?...其中 0:区分大小写,1:不区分大小写 解决办法 在mysql的配置文件中添加 lowercasetable_names=1 实际解决方式 先查找mysql使用的配置文件 添加配置 重启mysql 查看是否生效...order of preference, my.cnf, $MYSQL_TCP_PORT, /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf...datadir=/work1/soft/mysql/data socket=/work1/soft/mysql/mysql.sock #设置忽略大小写(简单来说就是sql语句是否严格),默认库名表名保存为小写..., 不区分大小写 lower_case_table_names=1 # 开启ip绑定 #bind-address = 0.0.0.0 [mysqld_safe] log-error=/var/log/mysqld.log
原因查找: 因为linux下mysql默认是要区分表名大小写的。...这样设置后,表名在硬盘上以小写保存,MySQL将所有表名转换为小写存储和查找表上。该行为也适合数据库名和表的别名。...3)登陆mysql数据库,"alter table 旧表名 rename 新表名" 将带大写字母的旧表改为小写表名 4)最后再启动mysql即可!...下数据库名、表名、列名、别名大小写规则是这样的: 1)数据库名与表名是严格区分大小写的; 2)表的别名是严格区分大小写的; 3)列名与列的别名在所有的情况下均是忽略大小写的; 4)变量名也是严格区分大小写的...修改mysql为不区分大小写设置: [root@test-huanqiu ~]# mysqladmin -uroot -p shutdown //以安全模式关闭数据库 [root@test-huanqiu
记录一下,根据工作中项目交付要求,要将MySQL数据库中的表名和字段名中做一个规范,其中就有将表名和字段名统一做小写处理。...废话不多说,直接上MySQL脚本: 批量修改数据库下的表名(大写改小写): SELECT concat( 'rename table ' , TABLE_NAME , ' to ' , LOWER...(TABLE_NAME) ,' ;' ) AS '修改脚本sql' FROM information_schema.TABLES t WHERE TABLE_SCHEMA = '数据库名'; 批量修改列名...COLUMN_DEFAULT ), '\'' )), ';' ) AS '修改脚本sql' FROM information_schema.COLUMNS t WHERE TABLE_SCHEMA = '数据库名
最近公司项目的MySQL数据库要迁移到linux下,部署时日志总是显示报找不到一个表,用MYSQL查看明明有这个表。后来经百度,原来LINUX下的MYSQL默认是区分表名大小写的。...用命令查看当前是否区分大小写: *************************************** mysql> show variables like "%case%"; +-------...set (0.00 sec) ****************************************** lower_case_file_system | OFF 说明当前区分大小写...修改方法 1.ROOT登录,vi /etc/my.cnf 2.在[mysqld]下加入一行:lower_case_table_names=1 //(为0时区分) 3.保存退出,重启MySQL。
参考:http://www.cnblogs.com/duanjie/archive/2011/08/13/2136862.html 说到去重复,感觉逻辑很简单。但动手写起来却并不是那么容易。...去重复首先要把要留下的选出来,然后删除其他重复项。distinct虽然好用,但规则不明显。这里采用:select max(id) from user group by 重复依据。...1.取出要留下的数据,本次依据重复项的最大id为保留项。
我们大家可能都碰到过这种情况:在Linux下,MySQL的表名区分大小写,而在Windows下是不区分,从Windows下导出的数据脚本中使用的是小写,而Hibernate生成的SQL中表名是大写的,所以查不出数据...这个时候怎么办呢,显然改程序是不行的,时间上也不允许,所以只能设置MySQL数据库不区分大小写了,大家看以下步骤: 1、查询MySQL是否设置了区分大小写 show variables like "%case...其中lower_case_table_names代表了:0是区分大小写; 1是不区分大小写。显然我这个MySQL是区分大小写的。...拓展知识 MySQL在Linux下数据库名、表名、列名、别名大小写规则是这样的: 1、数据库名与表名是严格区分大小写的; 2、表的别名是严格区分大小写的; 3、列名与列的别名在所有的情况下均是忽略大小写的...; 4、变量名也是严格区分大小写的; MySQL在Windows下都不区分大小写。
继续造轮子 mysql数据库改名,官方没有直接修改数据库名称的命令 只有通过修改表名方式实现 #!.../bin/bash mysqlconn="mysql -uroot -p123456" 需要修改的数据库名 olddb="test1" # 修改后的数据库名 newdb="test2" # 创建新数据库...$mysqlconn -e "drop database if exists ${newdb};create database ${newdb};" # 获取所有表名 tables=$($mysqlconn...-N -e "select table_name from information_schema.tables where table_schema='${olddb}'") # 修改表名 for
背景 下午在搞代码部署的时候, 遇到一个文件名大小写的问题, 问题比较简单, 但是也简单整理下, 分享给大家。...到线上仓库看了一下, 文件名是小写的 userModal。 怪不得文件找不到。 知道错误原因就很好办了。...直接把git的忽略大小写关了: git config core.ignorecase false 然后重新提交, 就OK了。...大意是说, 忽略大小写敏感是为了在不同的文件系统上更好的工作。 比如APFS,HFS +,FAT,NTFS等。
用过MySQL的应该都会注意到,默认情况下,Linux下安装的MySQL是大小写敏感的,也就是说Table1和table1可以同时存在。...而Windows下的MySQL却是大小写不敏感的,所有表名和数据库名都会变成小写。...对于怎么启用或者停用MySQL数据库的大小写敏感,这个网上随便都能找到,就是改改参数lower_case_table_names,然后重启即可。...为此,我们需要将MySQL改为大小写敏感的模式,然后去重命名每个表名和数据库名。...一个一个的数据库去这么做,然后再把MySQL的参数改为大小写不敏感,这样才能正常使用。
where username = 'ADMIN';Empty set (0.00 sec)修改配置文件lower_case_table_names=0:表示表名和数据库名区分大小写lower_case_table_names...=1:表示表名和数据库名不区分大小写(默认在 Windows 上)lower_case_table_names=2:表示表名和数据库名在表创建时区分大小写,但在查询时不区分[mysqld]lower_case_table_names...Windows 和 Linux 的区别Windows默认情况下,Windows 的 MySQL 安装会将 lower_case_table_names 设置为 1,这意味着表名不区分大小写。...Linux默认情况下,Linux 的 MySQL 安装会将 lower_case_table_names 设置为 0,这意味着表名区分大小写。...如果需要不区分大小写,可以将其设置为 1,但要注意这可能会影响现有的数据库和表。
在MySQL中,数据库、表、triggers实际上都对应了datadir目录(或子目录)下的文件,因此,这些对象的名字是否大小写敏感主要是依赖于操作系统和文件系统的,因此这些内容在Windows中是大小写是不敏感的...、table(包括别名)的大小写敏感性可以通过系统参数lower_case_table_names来配置(修改参数的值需要重启数据库); lower_case_table_names =0(Unix default...=1(Windows default):大小写不敏感,MySQL将数据全部转化为小写形式存储在磁盘上,而且在查询的时候也是全部转化为小写进行比较; lower_case_table_names =2(...,“_cs”代表case-sensitive大小写敏感,“_bin”的大小写敏感依赖于character的二进制编码; collation可以在数据库对象(server、database、table、column...MYSQL轻松学
问题场景 在使用mysql命令进行数据库创建时,发现“-”等特殊字符无法使用,提示sql语句语法错误。...mysql> CREATE DATABASE test-test; 解决方案 使用反引号“,即英文输入法下,数字1左边,和“~”同一个按键上的符号,可正常执行。...mysql> CREATE DATABASE `test-test`; Query OK, 1 row affected (0.00 sec)
在 Innodb 数据库引擎下修改数据库名的方式与 MyISAM 引擎下修改数据库的方式完全不一样,如果是 MyISAM 可以直接去数据库目录中 mv 就可以,Innodb 如果用同样的方法修改会提示相关表不存在.../bin/bash # 假设将 sakila 数据库名改为 new_sakila mysql -uroot -p123456 -e 'create database if not exists new_sakila...' list_table=$(mysql -uroot -p123456 -Nse "select table_name from information_schema.TABLES where TABLE_SCHEMA...='sakila'") for table in $list_table do mysql -uroot -p123456 -e "rename table sakila....$table" done 这里用到了 rename table 更改表名的命令,但是如果新表名后面加数据库,将会将原来的数据库的表移动到新的数据库,所有这种方法既安全又快速,推荐!
翻译过来大致 按大小写敏感存储表名 按小写形式存储表名 比较时不区分大小写 按大小写敏感存储表名 以小写字母进行比较 他们的默认值在不同系统下面有区分 MacOS2 Unix0 Windows1 然后注意...mysql # 重启mysql,请确认路径 /etc/init.d/mysql restart 修改后可以用这三个sql查询是否生效 select @@lower_case_table_names;...中的表是按照大写表名去查,而我们此处配置的,并不是查询时忽略表名大小写,而是全部以小写表名去查询 因此配置了lower_case_table_names = 1后,大写表名用大写sql一律作废匹配不到...翻译过来就是说Linux或者其他类似Unix的系统,不支持设置为2[1],mysql服务端会强制使用0代替 那么这么多表名,一个一个改不是很麻烦?...这里我们可以使用mysql数据库信息函数去按规则[2]查询出表名转换为小写,再拼接成多条sql 或者使用存储过程、代码处理等方式 这里我使用以下sql: SELECT CONCAT( 'ALTER TABLE
1 之前写了docker-compose.yml安装mysql 但是发现其表名大小写敏感,也没指定配置文件,参考我之前写的: mysql大小写踩坑 mysql8卸载重新安装并配置lower_case_table_names...=1 mysql having报错this is incompatible with sql_mode=only_full_group_by 于是重新编写docker-compose.yml # Use...root/example as user/password credentials version: '3.1' services: db: image: mysql # NOTE...: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html...Untagged: mysql:latest Untagged: mysql@sha256:232936eb036d444045da2b87a90d48241c60b68b376caf509051cb6cffea6fdc
改变表名 mysql> ALTER TABLE `原表名` RENAME TO `新表名`; 改库名 可以把原库倒出来然后恢复到新库里 show variables like...+—————+—————–+ | Variable_name | Value | +—————+—————–+ | datadir | /var/lib/mysql.../ | +—————+—————–+ 1 row in set (0.00 sec) 如果是INNODB的话,其实是无法修改库名的....假设源库名是’ceshi1’,目标库名是’ceshi2’ 首先创建目标库 create database ceshi1; 获取所有源库的表名 use information_schema...手册摘录: This statement was added in MySQL 5.1.7 but was found to be dangerous and was removed in MySQL
Oracle数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名详解 数据库名、实例名、数据库域名、全局数据库名、服务名 , 这是几个令很多初学者容易混淆的概念。...一、数据库名 什么是数据库名? 数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。...修改数据库名 前面建议:应在创建数据库时就确定好数据库名,数据库名不应作修改,因为修改数据库名是一件比较复杂的事情。那么现在就来说明一下,如何在已创建数据之后,修改数据库名。...全局数据库名 全局数据库名=数据库名+数据库域名,如前述福建节点的全局数据库名是:oradb.fj.jtyz 四、数据库服务名 什么是数据库服务名?...从oracle9i版本开始,引入了一个新的参数,即数据库服务名。参数名是SERVICE_NAME。 如果数据库有域名,则数据库服务名就是全局数据库名;否则,数据库服务名与数据库名相同。
问题 默认的 git 对文件名是大小写是不敏感的,因此需要设置下。 对于这个问题,没有使用 git rm 来删除 repo 的文件,再次上传之后,怎么移除这个文件。...解决办法 如果 git 配置没有设置大小写敏感的话,直接复制下面的命令即可 git config core.ignorecase false 对于修改之前的文件,远端仓库没有删除,本地是手动删除。...orderdetail/orderdetail.wxml deleted: pages/orderdetail/orderdetail.wxss 上面的orderdetail 和orderDetail重复了
4822808.html#tsql 某系统设计的不是很合理,库很多,图形化操作分离都得搞半天,各种改名也就更浪费时间了,于是引入了命令~(SQLServer现在已经在Linux里面跑了,咱们也得跟上时代) 1.数据库名修改前...2.数据库名修改后 ? 3.物理文件名和逻辑名并没有变化 ?...4.逻辑名修改前后 alter database NewTest modify file(name=N'Test', newname=N'NetTest') ? 5.逻辑名发生改变物理文件名不变 ?
领取专属 10元无门槛券
手把手带您无忧上云