위의 솔루션은 나를 위해 충분히 완료되지 않았다. auto_increment, 기본값 및 Null과 같은 열 속성을 삭제했습니다. 또한, 나는 information_schema와 mysql에서 컬럼을 변경하고 싶지 않았다.
경고 : 모든 열 속성 조합을 조사하지 않았습니다. 내 데이터베이스를 변환 할 수있게 해주는 세트. 데이터베이스에 CURRENT_TIMESTAMP와 같은 상수가 더있을 수 있습니다.
내 데이터베이스에 무엇이 있는지 확인하기 위해 아래의 몇 가지 변형을 사용했습니다.
select
CONCAT('ALTER TABLE ', '`', t.TABLE_NAME, '`', ' CHANGE `', c.COLUMN_NAME, '`',
' `', LOWER(`COLUMN_NAME`), '` ', COLUMN_TYPE,
IF (IS_NULLABLE = "YES", ' ', ' NOT NULL'),
IF (IS_NULLABLE = "YES",
IF (COLUMN_DEFAULT IS NULL, 'DEFAULT NULL', IF (COLUMN_DEFAULT = 'CURRENT_TIMESTAMP', ' DEFAULT CURRENT_TIMESTAMP', CONCAT(' DEFAULT ', '''', COLUMN_DEFAULT, ''''))),
IF (COLUMN_DEFAULT IS NOT NULL, IF (COLUMN_DEFAULT = 'CURRENT_TIMESTAMP', ' DEFAULT CURRENT_TIMESTAMP', CONCAT(' DEFAULT ', '''', COLUMN_DEFAULT, '''')), '')) ,
' ', EXTRA, ';')
from
information_schema.tables t
JOIN
information_schema.columns c
ON (c.table_name = t.table_name)
WHERE t.table_type = 'BASE TABLE'
AND t.table_schema not in ('information_schema', 'mysql')
INTO OUT FILE '/tmp/ColumnsToLowerCase.sql'
시간 절약 노트 : 충분한 권한으로 데이터베이스에 로그인 할 수있는 파일로 출력하려면
SELECT distinct COLUMN_DEFAULT FROM information_schema.columns
이
은 나를 위해 일한 솔루션입니다. 루트 권한으로 로그인 했으므로 루트로 로그인했지만 결과를 잘라내어 지나치는 경우에도 작동합니다.
+1, 너의 세계를 거꾸로 만들어라. – ajreal