#php #modx #modx-revolution #xpdo
#php #modx #modx-революция #xpdo
Вопрос:
У меня есть пользовательский дополнительный для modx revolution, но он выдает ошибку:
[2014-06-28 15:06:21] (ERROR @ /index.php) Error 42S02 executing statement:
Array
(
[0] => 42S02
[1] => 1146
[2] => Table 'db_name.modx_static_values' doesn't exist
)
Я пытаюсь добавить пакет, подобный этому, в конструктор:
if (!$this->modx->addPackage('americansurcharge',MODX_CORE_PATH.'components/americansurcharge/model/','gsi_')) {
$this->modx->log(modX::LOG_LEVEL_ERROR,'Problem adding surcharge package. ');
}
Таблица ‘gsi_static_values’ действительно существует, и путь правильный [проверен] — кроме того, в моей схеме:
<?xml version="1.0" encoding="UTF-8"?>
<model package="AmericanSurcharge" baseClass="xPDOObject" tablePrefix="gsi_" platform="mysql" defaultEngine="MyISAM" version="1.1">
<object class="StaticValues" table="static_values" extends="xPDOSimpleObject">
....some table columns ...
</object>
</model>
префикс таблицы ‘gsi_’ задан явно.
Как мне исправить эту ошибку?
Комментарии:
1. Не знаком с modx, но: есть ли фаза сборки или что-то, что создало бы необходимую
modx_static_values
таблицу? Или, может быть, он пытался и потерпел неудачу, и просмотр ваших журналов может показать, почему?2. на самом деле это работает наоборот, это пакет modx, который создает классы и т. Д. ~ Из ~ моей уже существующей таблицы DB.
3. Ах да. Ну, похоже, что он пытается получить доступ к этой существующей таблице и обнаруживает, что она не существует. Возможно, неправильные разрешения пользователя базы данных или поиск в неправильной базе данных? Редактировать: ах, это не учитывает префикс, понял. Кроме отслеживания этого вручную, боюсь, я понятия не имею!
4. Возможная аналогичная проблема: forums.modx.com/index.php/topic ,49942.0.html
5. спасибо за попытку, но я думаю, что она у меня есть — я восстановил схему с некоторыми небольшими изменениями и получил сообщение об ошибке: неизвестный столбец ‘StaticValues. 0’ в ‘списке полей’ …. не был уверен, почему он это делает, но я заметил, что схема не цитирует столбцы таблицы, которые были цифрами, [У меня было несколько столбцов 301, 304, 401 и т. Д.], Как только я поставил перед ними префикс [grade_301, grade_304 и т. Д.] Ивосстановил схему, все работало просто отлично. может быть ошибка в пакете cmpgenerator.
Ответ №1:
Я восстановил схему с некоторыми небольшими изменениями и получил сообщение об ошибке: неизвестный столбец ‘StaticValues.0’ в ‘списке полей’ …. не был уверен, почему он это делает, но я заметил, что схема не цитирует столбцы таблицы, которые были цифрами, [У меня было несколько столбцов 301, 304, 401 и т. Д.], Как только я поставил перед ними префикс [grade_301, grade_304 и т. Д.] Ивосстановил схему, все работало просто отлично.
Решение = ‘Не использовать числовые значения для имен столбцов таблицы’
Комментарии:
1. Существует компонент CMPGenerator. Это помогает сгенерировать карту объекта modx (заставить modx использовать их для работы с объектами вместо схемы xml) из вашей базы данных.
2. Имена полей базы данных должны содержать хотя бы одну букву. informit.com/articles/article.aspx?p=30875