Рейтинг: 0.391  
Внедрено
Предложил Пользователь 112528 05.04.2012 15:41:14

Проверка структуры таблиц

Очень часто хостинг-провайдеры, дают права только SELECT, INSERT, UPDATE, DELETE к базе, что обеспечивает достаточный уровень безопасности.
В связи с этим при обновлениях (при изменении структуры таблиц не работает свойство REFERENCE), а соответственно возникают подобные сообщения:
MySQL Query Error: SELECT FS.ID, FS.USER_ID, FS.FORUM_ID, FS.TOPIC_ID, FS.LAST_SEND, FS.NEW_TOPIC_ONLY, FS.SITE_ID, DATE_FORMAT(FS.START_DATE, '%d.%m.%Y %H:%i:%s') as START_DATE, U.EMAIL, U.LOGIN, U.NAME, U.LAST_NAME, FT.TITLE, F.NAME AS FORUM_NAME, FU.SUBSC_GROUP_MESSAGE, FU.SUBSC_GET_MY_MESSAGE FR OM b_forum_subscribe FS INNER JOIN b_user U ON (FS.USER_ID = U.ID) LEFT JOIN b_forum_topic FT ON (FS.TOPIC_ID = FT.ID) LEFT JOIN b_forum F ON (FS.FORUM_ID = F.ID) LEFT JOIN b_forum_user FU ON (U.ID = FU.USER_ID) LEFT JOIN b_user_group UG ON (U.ID = UG.USER_ID) LEFT JOIN b_forum_perms FP ON (FP.FORUM_ID = FS.FORUM_ID AND FP.GROUP_ID=UG.GROUP_ID) LEFT JOIN b_forum_perms FP1 ON (FP1.FORUM_ID = FS.FORUM_ID AND FP1.GROUP_ID=2) WHERE 1 = 1 AND ((FS.FORUM_ID = 2 )) AND ((FS.TOPIC_ID = 10 OR FS.TOPIC_ID = 0 OR FS.TOPIC_ID IS NULL)) AND ((U.ACTIVE = 'Y' )) AND (( (FP.PERMISSION >= 'E') OR (FP1.PERMISSION >= 'E') OR ((FP.ID IS NULL) AND (UG.GROUP_ID = 1)))) AND ((FS.LAST_SEND IS NULL OR FS.LAST_SEND = 0 OR FS.LAST_SEND < 19)) AND (FS.SOCNET_GROUP_ID IS NULL) GROUP BY FS.ID, FS.USER_ID, FS.FORUM_ID, FS.TOPIC_ID, FS.LAST_SEND, FS.NEW_TOPIC_ONLY, FS.SITE_ID, DATE_FORMAT(FS.START_DATE, '%d.%m.%Y %H:%i:%s'), U.EMAIL, U.LOGIN, U.NAME, U.LAST_NAME, FT.TITLE, F.NAME, FU.SUBSC_GROUP_MESSAGE, FU.SUBSC_GET_MY_MESSAGE ORDER BY FS.USER_ID ASC[Unknown column 'FS.SOCNET_GROUP_ID' in 'wh ere clause']
 
Теперь идея - СОЗДАТЬ ИНСТРУМЕНТ ПРОВЕРКИ СТРУКТУРЫ (ПОЛЕЙ) ТАБЛИЦ.
В случае не возможности изменения автоматом (при запрещении соответствующих прав к базе) аккумулировать sql запросы для передачи их администратору хостинга.

Проверить наличие полей при запрете доступа можно путем запроса по каждому полю и следить за ошибками.

Сопоставить 2 величины и вуаля! Одно остается на мой взгляд загадкой... почему эта идейка еще не реализована?
Рейтинг: 0  
Ответил Шаромов Денис 14.03.2014 14:29:28
Проверка системы не только проверяет структуру таблиц (с полями), но и наличие базовых данных в них (которые прописаны в install.sql модуля). А также всё, что возможно, исправляет автоматически.

При этом в журнале проверки есть список запросов для ручного исправления.