Генерация схемы для разрабатываемого компонента
Всем привет!
Столкнулся с проблемой. Разрабатываю компонент на основе modExtra, все по урокам Василия. Переименовал все при помощи rename_it.php. Исправил схему, сделал build.model.php, затем build.transport.php. Далее в таблице не создаются нужные поля и появляются ошибки при построении/установке пакета.
Содержимое схемы такое:
При выполнении build.transport.php вижу такие ошибки:
Пакет устанавливается, но при установке из трех представленных полей (name, description, active) в таблице создается только поле active. Пробовал вручную удалять таблицу и переустанавливать, заново генерировать схему и прочее — безрезультатно.
Что я упустил?
Всем заранее спасибо.
Столкнулся с проблемой. Разрабатываю компонент на основе modExtra, все по урокам Василия. Переименовал все при помощи rename_it.php. Исправил схему, сделал build.model.php, затем build.transport.php. Далее в таблице не создаются нужные поля и появляются ошибки при построении/установке пакета.
Содержимое схемы такое:
<?xml version="1.0" encoding="UTF-8"?>
<model package="mspresentation" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" phpdoc-package="mspresentation"
version="1.1">
<object class="msPresentationItem" table="ms2_mspresentation_items" extends="xPDOSimpleObject">
<field key="name" dbtype="varchar" precision="100" phptype="string" null="false" default=""/>
<field key="description" dbtype="text" phptype="text" null="true" default=""/>
<field key="active" dbtype="tinyint" precision="1" phptype="boolean" null="true" default="1"/>
<index alias="name" name="name" primary="false" unique="false" type="BTREE">
<column key="name" length="" collation="A" null="false"/>
</index>
<index alias="active" name="active" primary="false" unique="false" type="BTREE">
<column key="active" length="" collation="A" null="false"/>
</index>
</object>
</model>При выполнении build.transport.php вижу такие ошибки:
[2015-09-22 11:29:47] (INFO @ /msPresentation/_build/build.transport.php) Created table `modx_ms2_mspresentation_items`
SQL: CREATE TABLE `modx_ms2_mspresentation_items` (`id` INTEGER unsigned NOT NULL AUTO_INCREMENT, `name` VARCHAR(100) NOT NULL DEFAULT '', `description` TEXT NULL, `active` TINYINT(1) NULL DEFAULT '1', PRIMARY KEY (`id`), INDEX `name` (`name`), INDEX `active` (`active`)) ENGINE=MyISAM
[2015-09-22 11:29:47] (ERROR in xPDOManager_mysql::removeField @ /home/s/suzukijk/arivera-test/public_html/core/xpdo/om/mysql/xpdomanager.class.php : 394) Error removing field msPresentationItem->active: Array
(
[0] => 42000
[1] => 1090
[2] => You can't delete all columns with ALTER TABLE; use DROP TABLE instead
)
[2015-09-22 11:29:47] (ERROR in xPDOManager_mysql::addIndex @ /home/s/suzukijk/arivera-test/public_html/core/xpdo/om/mysql/xpdomanager.class.php : 329) Error adding index PRIMARY to msPresentationItem: Array
(
[0] => 42000
[1] => 1072
[2] => Key column 'id' doesn't exist in table
)
[2015-09-22 11:29:47] (ERROR in xPDOManager_mysql::addIndex @ /home/s/suzukijk/arivera-test/public_html/core/xpdo/om/mysql/xpdomanager.class.php : 329) Error adding index name to msPresentationItem: Array
(
[0] => 42000
[1] => 1072
[2] => Key column 'name' doesn't exist in table
)
[2015-09-22 11:29:47] (ERROR in xPDOManager_mysql::addIndex @ /home/s/suzukijk/arivera-test/public_html/core/xpdo/om/mysql/xpdomanager.class.php : 329) Error adding index active to msPresentationItem: Array
(
[0] => 42000
[1] => 1061
[2] => Duplicate key name 'active'
)
[2015-09-22 11:29:50] (ERROR @ /msPresentation/_build/build.transport.php) [OnSiteRefresh][2015-09-22 11:29:50] (INFO @ /msPresentation/_build/build.transport.php) refresh_default: MinifyX
[2015-09-22 11:29:50] (ERROR @ /msPresentation/_build/build.transport.php) [OnSiteRefresh][2015-09-22 11:29:50] (INFO @ /msPresentation/_build/build.transport.php) refresh_default: pdoToolsПакет устанавливается, но при установке из трех представленных полей (name, description, active) в таблице создается только поле active. Пробовал вручную удалять таблицу и переустанавливать, заново генерировать схему и прочее — безрезультатно.
Что я упустил?
Всем заранее спасибо.
Комментарии: 18
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Статья эта лежит у меня в избранных, но так и не разобрался, были ли внесены эти изменения в изначальный modExtra.
Вообще, там странная штука, сейчас попробую развернуть на каком нибудь другом сервере. Тут какой-то глюк MySQL налицо, поскольку если удалить поле «active» через PHPMyAdmin, то магическим образом в MyAdmin`е становятся видны name и description. Если затем вручную добавить active, то в админке на странице компонента даже проходит создание и сохранение элемента, но в таблице элемент после этого не появляется.
Вообще, у меня это полностью стоковый modExtra, только переименованный путем rename_it.php, я просто смотрю, как он себя ведет и что умеет. Я просто удалил стоковую схему и сгенерировал через build.model.php новую, а затем попытался собрать и установить через build.transport.php. Так что сам я напортачить, вроде бы, не должен был.
suzukijk_shi_me — это название БД. Что-то тут не так…
Вот только что скопировал из репозитория минуту назад, обновил на сервере, пересобрал. Лог:
Я тоже заинтересован, так что без проблем, давай тестировать. Кстати, скайп: plintus_cat. Там будет быстрее обмениваться информацией.
Теперь не открывается страница компонента в админке. Просто белый экран.
Пересобрал пакет и установил его.