MySQL 通过修改lower_case_table_names=1后造成原有数据库中用大写定义的表无法访问

MySQL 通过修改lower_case_table_names=1后造成原有数据库中用大写定义的表无法访问

异常信息

### Cause: java.sql.SQLSyntaxErrorException: Table 'legends_process_engine.xxx' doesn't exist

异常原因

开发之前在mysql里创建这张带有大写字母的表时,mysql还是默认的区分大小写设置(lower_case_table_names=0),即对大小写不敏感。
后来将mysql 设置lower_case_table_names=1,这时mysql就会强制以小写保存的表,后续再使用修改配置之前大写字母定义的表,就会报错说不存在!

解决方案

  1. 将MySQL 改成区分大小写( lower_case_table_names=0)
  2. 获取将库中所有表修改为小写的语句
SELECT
	concat(
		'rename table ',
		table_name,
		' to ',
		lower(table_name),
		';'
	)
FROM
	information_schema. TABLES
WHERE
	table_schema = 'legends_process_engine';
  1. 执行修改语句
  2. 将MySQL 改成不区分大小写( lower_case_table_names=1)

备用语句

获取修改legends_process_engine中所有表名修改为小写的SQL语句

若要全部列修改为大写把 lower 函数改成UCASE即可

SELECT
	concat(
		'rename table ',
		table_name,
		' to ',
		lower(table_name),
		';'
	)
FROM
	information_schema. TABLES
WHERE
	table_schema = 'legends_process_engine';

获取修改legends_process_engine中所有表列名修改为大写的SQL语句

若要全部列修改为小写把UCASE 函数改成lower即可

SELECT
     concat( 'alter table ', TABLE_NAME, ' change column ', COLUMN_NAME, '  ', UCASE( COLUMN_NAME ), '  ', COLUMN_TYPE,' ',EXTRA,' comment "',COLUMN_COMMENT,'";' ) AS '修改脚本'
 FROM
     information_schema.COLUMNS
 WHERE
     TABLE_SCHEMA = 'legends_process_engine'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值