Что вызывает эту ошибку modx xpdo?

#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