[dbAdmin] Управление таблицами БД. Релиз.
Предлагаю вашему вниманию первую версию модуля для управления таблицами базы данных. Пока функционал достаточно скромный, но разработчикам немного упростит жизнь.
Основные возможности:
— просмотр таблиц;
— переименование, очищение и удаление таблиц;
— экспорт таблиц в текстовый файл;
— поиск таблицы по имени или классу;
— выполнение sql запросов.
После моего прошлого анонса произошло важное изменение — теперь список таблиц хранится в специальной таблице, а не зачитывается из базы. Что это дает? Теперь для таблицы можно указать класс объекта MODX. А это дает возможность использовать функционал xPDO и расширяет функциональность модуля. Например, можно изменять данные в выбранной таблице, как в phpMyAdmin (пока не реализовано), сортировать столбцы, выполнять sql запрос через указание класса, искать таблицу по классу и т.д.
Единственный недостаток — необходимость поддерживать актуальность этой таблицы. Т.е. когда добавили таблицу в MySql (например, при установке какого-нибудь компонента) или удалили, нужно синхронизировать таблицу. Но думаю, это небольшая плата за удобства, которые предоставляет xPDO. Тем более, что синхронизация достаточно простая —нужно нажать кнопку «Синхронизация» когда на ней появляется желтый восклицательный знак (см. картинку). С версии 1.0.0-pl синхронизация производится автоматически.
Кстати, системные таблицы с нужными параметрами добавляются при установке компонента. Для пользовательский таблиц нужно самостоятельно указать класс и пакет. Последний нужен для xPDO.
Работать с компонентом достаточно просто и интуитивно. Если нужно выгрузить всю базу данных, нажимаем кнопку «Экспорт базы данных». Если нужно выполнить операции экспорта, очистки или удаления нескольких таблиц, работаем с меню «Массовые действия». Для работы с одной таблицей можно пользоваться кнопками из колонки «Действия».
Кстати, в этой колонке есть еще кнопка «Просмотр таблицы», которая вызывает окно с данными этой таблички. Пока только для просмотра, но в дальнейшем и с возможностью редактирования данных.
Еще одна фича компонента — выполнение sql запросов. Для этого есть отдельная вкладка SQL. Там можно писать стандартные запросы MySql. А так как у нас есть карта таблиц и классов, то возможен вот такой синтаксис:
Результат запроса показывается в нижней части пока через print_r. В дальнейшем планирую вывод в окне.
Разрешения
Для работы с компонентом пользователь должен иметь соответствующие права.
Пока все. В планах, кроме озвученного, также возможность создания таблиц.
Мне кажется компонент нужный и пригодится многим.
Проект на Github.
Версия 1.1.0.
Основные возможности:
— просмотр таблиц;
— переименование, очищение и удаление таблиц;
— экспорт таблиц в текстовый файл;
— поиск таблицы по имени или классу;
— выполнение sql запросов.
После моего прошлого анонса произошло важное изменение — теперь список таблиц хранится в специальной таблице, а не зачитывается из базы. Что это дает? Теперь для таблицы можно указать класс объекта MODX. А это дает возможность использовать функционал xPDO и расширяет функциональность модуля. Например, можно изменять данные в выбранной таблице, как в phpMyAdmin (пока не реализовано), сортировать столбцы, выполнять sql запрос через указание класса, искать таблицу по классу и т.д.
Единственный недостаток — необходимость поддерживать актуальность этой таблицы. Т.е. когда добавили таблицу в MySql (например, при установке какого-нибудь компонента) или удалили, нужно синхронизировать таблицу. Но думаю, это небольшая плата за удобства, которые предоставляет xPDO. Тем более, что синхронизация достаточно простая —
Кстати, системные таблицы с нужными параметрами добавляются при установке компонента. Для пользовательский таблиц нужно самостоятельно указать класс и пакет. Последний нужен для xPDO.
Работать с компонентом достаточно просто и интуитивно. Если нужно выгрузить всю базу данных, нажимаем кнопку «Экспорт базы данных». Если нужно выполнить операции экспорта, очистки или удаления нескольких таблиц, работаем с меню «Массовые действия». Для работы с одной таблицей можно пользоваться кнопками из колонки «Действия».
Кстати, в этой колонке есть еще кнопка «Просмотр таблицы», которая вызывает окно с данными этой таблички. Пока только для просмотра, но в дальнейшем и с возможностью редактирования данных.
Еще одна фича компонента — выполнение sql запросов. Для этого есть отдельная вкладка SQL. Там можно писать стандартные запросы MySql. А так как у нас есть карта таблиц и классов, то возможен вот такой синтаксис:
select pagetitle, uri from {modResource}
Результат запроса показывается в нижней части пока через print_r. В дальнейшем планирую вывод в окне.
Разрешения
Для работы с компонентом пользователь должен иметь соответствующие права.
- tables_list — Разрешает вывод списка таблиц.
- table_view — Разрешает просмотр таблицы.
- table_save — Разрешает сохранять данные.
- table_truncate — Разрешает удалять записи из таблицы (truncate table).
- table_remove — Разрешает удалять таблицу (drop table).
- table_export — Разрешает экспорт таблицы.
- sql_query_execute — Разрешает выполнение sql запросов.
Пока все. В планах, кроме озвученного, также возможность создания таблиц.
Мне кажется компонент нужный и пригодится многим.
Проект на Github.
Дополнительная информация
Полная документация.Версия 1.1.0.
Поблагодарить автора
Отправить деньги
Комментарии: 18
Мне кажется компонент нужный и пригодится многим.
Несомненно. Сергей. по описанию просто сказочный компонент получился!
Замечательный — это да, а сказочный — это ты загнул. :)
Эх, времени бы побольше… столько фантазий.
Вчера у нас около дома на Москве реке битум горел… Дети визжали от эмоций… Дымища, вонища, темнотища, вертолеты, пожарные, телевидение… А когда потухло, пошли смотреть. Потом еще все новости надо обязательно посмотреть — смотри как горит, мы туда ходили…
Полдня пролетело. Какая уж тут работа… И сегодня вечером пойдем, проверим, вдруг дяди опять тушить будут. Ни секунды времени для себя. :)
Эх, времени бы побольше… столько фантазий.
Вчера у нас около дома на Москве реке битум горел… Дети визжали от эмоций… Дымища, вонища, темнотища, вертолеты, пожарные, телевидение… А когда потухло, пошли смотреть. Потом еще все новости надо обязательно посмотреть — смотри как горит, мы туда ходили…
Полдня пролетело. Какая уж тут работа… И сегодня вечером пойдем, проверим, вдруг дяди опять тушить будут. Ни секунды времени для себя. :)
Добавил видео для визуального восприятия. Плюс для себя — осваиваю видеокасты.
Выложил 1.0.0 pl в Магазин modstore.pro/packages/utilities/dbadmin
При экспорте: «Ошибка путь не найден», где искать путь?
Проверьте, если ли папка tmp в /assets/components/dbadmin. Если нет, создайте.
А у меня такая проблема. Выбираешь просмотреть таблицу, появляется окно, записей там не видно, пишет — «Нет данных для вывода». Нажимаю кнопку обновить — вечный лоадер. Хотя в общей таблице, отображено количество записей и объём памяти. На двух сайтах ставил дополнение (разные сервера), на обоих одно и тоже.
Скорее всего это. В следующем обновлении будет восстановлена поддержка PHP 5.3
Круто! Да, у меня как раз 5.3 стоит…
А ещё было бы неплохо при экспорте таблиц сделать название экспортного файла как и у самих таблиц, а ещё лучше с датой и временем экспорта.
Ошибка при экспорте на хостинг #1054 — Unknown column 'live' in 'field list'
Есть два sql файла, один с phpMyAdmin хостинга все норм, второй с dbAdmin экспортится с ошибкой.
этот отрезок у обоих одинаковый:
CREATE TABLE IF NOT EXISTS `modx_slideshow_slide` (
бла
бла
бла
`slide_status` set('live','archive','deleted','restore_point','TBD') DEFAULT 'TBD',
Вся запарка в поле № 8, как ее сохраняет dbAdmin, а именно там где значение live без одинарных кавычек:
(1, 1, 0, '2015-12-27 00:00:00', '2018-12-23 00:00:00', '2015-12-27 00:08:10', 1, ive, 1,
Вот с phpMyAdmin хостинга:
(1, 1, 0, '2015-12-27 00:00:00', '2018-12-23 00:00:00', '2015-12-27 08:08:10', 1, 'live', 1,
Есть два sql файла, один с phpMyAdmin хостинга все норм, второй с dbAdmin экспортится с ошибкой.
этот отрезок у обоих одинаковый:
CREATE TABLE IF NOT EXISTS `modx_slideshow_slide` (
бла
бла
бла
`slide_status` set('live','archive','deleted','restore_point','TBD') DEFAULT 'TBD',
Вся запарка в поле № 8, как ее сохраняет dbAdmin, а именно там где значение live без одинарных кавычек:
(1, 1, 0, '2015-12-27 00:00:00', '2018-12-23 00:00:00', '2015-12-27 00:08:10', 1, ive, 1,
Вот с phpMyAdmin хостинга:
(1, 1, 0, '2015-12-27 00:00:00', '2018-12-23 00:00:00', '2015-12-27 08:08:10', 1, 'live', 1,
Проблема в том что не корректно определял поле SET и пропускал его без одинарных кавычек, в итоге добавил еще условие elseif в файл core/components/dbadmin/processors/mgr/tables/export.class.php на 105 строке и все стало ок.
if ( is_null($rows[$i][$j]) ) {
$sql .= 'NULL';
} elseif ($fields[$j]['type'] == 'string') {
$val = '\''.addslashes($rows[$i][$j]).'\'';
$sql .= strtr(
$val,
array("\n" => '\n', "\r" => '\r', "\t" => '\t')
);
} elseif (!is_numeric($rows[$i][$j])) {
$sql .= '\''.$rows[$i][$j].'\'';
} else {
$sql .= $rows[$i][$j];
}
Автору большой респект за такое классное дополнение!
if ( is_null($rows[$i][$j]) ) {
$sql .= 'NULL';
} elseif ($fields[$j]['type'] == 'string') {
$val = '\''.addslashes($rows[$i][$j]).'\'';
$sql .= strtr(
$val,
array("\n" => '\n', "\r" => '\r', "\t" => '\t')
);
} elseif (!is_numeric($rows[$i][$j])) {
$sql .= '\''.$rows[$i][$j].'\'';
} else {
$sql .= $rows[$i][$j];
}
Автору большой респект за такое классное дополнение!
Проверку добавил Спасибо!
При просмотре таблицы всплывающее окно где-то за пределами экрана, как вернуть его обратно? Удаление и установка пакета не помогают.
Монитор зажевал окно, нужно открутить заднюю стенку и там посмотреть.
Или как вариант — открыть консоль (F12), найти
Или как вариант — открыть консоль (F12), найти
<div id="dbadmin-table-data-window" ...
и выставить ему свойство TOP в положительное значение.
Сергей, добрейшего дня, научите пожалуйста создать товары через импорт-экпорт с sql-базы
Не пойму в каких таблицах лежат продукты?
Товары со старого сайта не появились, хотя я экспортировал-импортировал следующие таблицы:
modx_ms2_order_products
modx_ms2_products
modx_ms2_product_categories
modx_ms2_product_files
modx_ms2_product_links
modx_ms2_product_options
Других таблиц со словом «Product» нет…
Не пойму в каких таблицах лежат продукты?
Товары со старого сайта не появились, хотя я экспортировал-импортировал следующие таблицы:
modx_ms2_order_products
modx_ms2_products
modx_ms2_product_categories
modx_ms2_product_files
modx_ms2_product_links
modx_ms2_product_options
Других таблиц со словом «Product» нет…
К сожалению, помочь нечем. Я с минишопом никак.
Установил компонент под Администратором.
А таблицы не выводятся «Нет данных для вывода»
куда копать? права? не верный конект к БД?
А таблицы не выводятся «Нет данных для вывода»
куда копать? права? не верный конект к БД?
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.