Всем привет.

Если вы столкнулись с ситуацией когда в базе есть колонки с кодировкой или сравнением отличающимися от базовых то вам наверняка не захочется их все перебирать руками. Я столкнулся с ситуацией, когда битриксовая проверка сайта сказала о 36 не правильных полях в базе и разумеется не сочла нужным указать какие именно. У меня был вариант или перебирать руками 350 таблиц и более 1000 столбцов в поисках не правильных, или найти их запросом… и такой запрос нашелся, он позволяет вытащить список всех полей таблиц с фильтрацией по кодировкам.

Вот он этот запрос:
выполнять в базе information_schema — у вас должен быть доступ к ней иначе ничего не выйдет

SELECT `TABLE_NAME` , `COLUMN_NAME` , `COLLATION_NAME`
FROM `COLUMNS`
WHERE `TABLE_SCHEMA` = '___TABLE_NAME___'
AND `COLLATION_NAME` != 'cp1251_general_ci'
LIMIT 0 , 30 

___TABLE_NAME___ — имя базы данных в которой ищем
cp1251_general_ci — основная кодировка базы, ищем столбцы сравнение которых ей не соответствуют

Запрос вернет список вида ИМЯ_ТАБЛИЦЫ | ИМЯ_СТОЛБЦА | КОДИРОВКА_СТОЛБЦА по которому можно быстро исправить кодировки запросами или руками.
Будьте осторожны и бекапьтесь перед правкой, чтобы не побить данные в кириллице.

MySQL — поиск столбцов с неправильным COLLATION

3 комментариев к “MySQL — поиск столбцов с неправильным COLLATION

Добавить комментарий для svx Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

90% сайтов рунета содержат уязвимости и могут быть взломаны! Проверь свой сайт!