Вышеуказанные решения не были достаточно полными для меня. Они удалили атрибуты столбца, такие как auto_increment, значения по умолчанию и Not Null. Кроме того, я не хотел менять столбцы в information_schema и mysql.
Предупреждение: я не исследовал все комбинации атрибутов столбцов. Просто набор, который позволил мне конвертировать мою базу данных. В вашей базе данных может быть больше констант типа CURRENT_TIMESTAMP.
Я использовал несколько вариантов ниже, чтобы определить, что было в моей базе данных.
SELECT distinct COLUMN_DEFAULT FROM information_schema.columns
Это решение, которое сработало для меня:
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'
Экономия времени:
Для вывода в файл необходимо войти в базу данных с достаточными правами.
У меня есть доступ с правами root, поэтому я вошел в систему как пользователь root, но результаты поиска и прошлые результаты также работают, если вам нужно.