Error hy000 executing statement

Summary modResource::getTemplateVarCollection fails using mysql server 5.7.9 unclear if xPDO or modx issue Step to reproduce Install modx 2.4.2 using mysql server 5.7.9 fail found using getResource...

Summary

  • modResource::getTemplateVarCollection fails using mysql server 5.7.9
  • unclear if xPDO or modx issue

Step to reproduce

  • Install modx 2.4.2 using mysql server 5.7.9
  • fail found using getResources with processing of template variables

Observed behavior

  • Template variables were not processed (empty)
  • Errorlog shows:
(ERROR @ /index.php) Error HY000 executing statement: 
Array
(
    [0] => HY000
    [1] => 3065
    [2] => Expression #1 of ORDER BY clause is not in SELECT list, references column '$$$$.tvtpl.rank' which is not in SELECT list; this is incompatible with DISTINCT
)

Expected behavior

  • no error in error log
  • processed template variables

Environment

  • MODX Revolution 2.4.2-pl (traditional)
  • ExtJS-Version: 3.4.1
  • Smarty-Version: 3.0.4
  • PHPMailer-Version: 5.2.13
  • MagpieRSS-Version: 0.72
  • MySQL Server Version: 5.7.9
  • mysql pdo driver Client API version: 5.5.46
  • PHP Version: 5.6.16-2

Notes

The issue results from the sortby statement $c->sortby('tvtpl.rank,modTemplateVar.rank'); used in conjunction with the DISTINCT query. tvtpl.rankis used to sort the result set but is not part of the SELECT statement.
Additionally selecting tvtpl.rank seems to fix the issue from within getTemplateVarCollection, but I am not sure that this fix belongs here. However, it fixes the issue for me. Find my fix below as a patch file:

diff -rc modx-2.4.2-pl/core/model/modx/modresource.class.php modx-2.4.2-pl_patched/core/model/modx/modresource.class.php
*** modx-2.4.2-pl/core/model/modx/modresource.class.php 2015-10-06 13:06:16.000000000 +0200
--- modx-2.4.2-pl_patched/core/model/modx/modresource.class.php 2015-12-11 12:26:28.193976999 +0100
***************
*** 360,365 ****
--- 360,366 ----
                  'tvc.contentid' => $resource->get('id'),
              ));
          }
+       $c->select(array('tvtpl.rank'));
          $c->sortby('tvtpl.rank,modTemplateVar.rank');
          return $resource->xpdo->getCollection('modTemplateVar', $c);
      }

Содержание

  1. Как убрать ошибки при использовании своих полей?
  2. Комментарии: 15
  3. Глюки с Modx
  4. Error HY000 executing statement #12826
  5. Comments
  6. Summary
  7. Step to reproduce
  8. Observed behavior
  9. Expected behavior
  10. Environment
  11. Notes
  12. Issue during setup when using mysql instead of mariadb #5
  13. Comments
  14. Footer
  15. Обновление Tickets
  16. Комментарии: 11

Как убрать ошибки при использовании своих полей?

Комментарии: 15

Здравствуйте! Если устанавливаю полю «size» пустую строку, подобная ошибка вылазит, только уже касаемо поля «context»:
далее устанавливаю полю «context» пустую строку и уже получаю такую ошибку:
Error 22007 executing statement:
INSERT INTO `pes6_site_content_extend` (`resource`, `country`, `datesa`, `size`, `context`) VALUES (1, », », ‘S’, »)
Array
(
[0] => 22007
[1] => 1366
[2] => Incorrect integer value: » for column `aso`.`pes6_site_content_extend`.`datesa` at row 1
)

Александр, я на Яндекс диск выложил файл плагина, схему и на всякий случай дамп таблицы, если возможно, посмотрите пожалуйста.

У меня получилось добиться, чтобы работало без ошибок, но это не решение проблемы, если к примеру выставить у всех полей кроме id и resource в MySQL по умолчанию «NULL» как я раннее писал, получаем ошибку от этой ошибки удалось избавится удалив в плагине «ExtendedResource» эту строку но как я понимаю это неверно, назначать всем полям по умолчанию «NULL» не учитывая их значимость.

Возможно это тоже необходимая информация в данном случае. Параметры сервера:

Александр, доброго вечера! В предыдущем комментарии, начиная с предложения (У меня получилось добиться, чтобы работало без ошибок,) до (Параметров сервера), не соответствует действительности это ошибочные выводы.

На данный момент ситуация такая, работает и сохраняет выбранные значения, только если в phpMyAdmin отключаешь строгий режим «sql-mode» но тогда выходит эта ошибка:
о чём это говорит и как от неё можно избавится?

Если не отключать «sql-mode» и у поля «size» и поля «context» в MySQL по умолчанию сделать пустую строку, выходит такая ошибка:
что можно попробовать сделать в данном случае?

Александр, здравствуйте! Не получается не как решить проблему появившееся «ошибки» поля (список, одиночный выбор), точнее при сохранении пустого поля в таблицу сохраняется слово Array что самое странное, с полями (список множественный выбор) не каких проблем нет.

Сделано таким образом:

Структура таблицы:

Схема:
Плагин:
Подскажите пожалуйста с чем это может быть связано и как можно попробовать решить эту проблему?

Александр, есть сомнения касаемо структуры таблицы, особенно (Атрибуты и Дополнительно) всё ли у меня правильно и правильно ли я понял по поводу удаления индекса id?

Добрый вечер, Алексаднр!
Вам нужно просто убрать [] (вы же сохраняете не массив):
Если при создании структуры таблицы, у нас в качестве первичного ключа (pk) используется поле id с автоинкрементом, то в схеме при описании объекта мы должны наследоваться от xPDOSimpleObject. Т.к. в SimpleObject реализован именно этот механизм (т.е. на основании первичного ключа id с автоинкрементом).
В противном случае, т.е. если у нас первичным ключом является что-то другое (например, два ключа), то в схеме мы дожны наследоваться от xPDOObject.

А ошибка в данном случае возникала из-за того, что pk выступало 2 поля сразу, а в схеме был выбран xPDOSimpleObject. Один из вариантов как это можно было сделать — это установить в качестве pk один ключ id с автоинкрементом.

Александр, здравствуйте! В очередной раз не получается самому разобраться и понять почему появляются данные ошибки, в этот раз ошибки появляются только тогда, когда создаёшь новый ресурс со своими полями, при последующих действиях работы с ресурсом их нет.

Первая: corecacheincludeselementsmodplugin47.include.cache.php (PHP warning: implode(): Invalid arguments passed строка: 657)
Если проследовать по пути и посмотреть в файл кеша, это закешированый плагин «ExtendedResource», ошибка в этой строке: и в кеше почему-то в конце кода плагина, функция «return;» прописывается два раза, с чем это связано?

Вторая: corexpdoomxpdoobject.class.php extendResource: (Attempt to set NOT NULL field mypole to NULL Строка: 811), если пройти по пути в файл: xpdoobject.class.php там эта строка:Третья: corexpdoomxpdoobject.class.php строка: 1452 (Error HY000 executing statement:)
В файле: xpdoobject.class.php под номером 1452 эта строка: Пробовал менять структуру таблицы, делал первичным ключем «resource» в место «id» удалял индекс id и наоборот, пробовал по разному, но данные изменение либо не чего не меняли в плане ошибок, либо добавляли новых и уже при сохранении значений в таблицу.

От первой ошибки получилось избавится, добавив в плагин «ExtendedResource» в строку масив: (array), но на сколько это правильно в данном случае, стоит ли так делать или нужно как-то по другому?

Вторую ошибку получается убрать, если в phpmyadmin в структуре таблицы у поля (список одиночный выбор) в данном случае: mypole «По умолчанию» в место «Как определено» выставить «Нет»

На третью ошибку при любых вариантах, повлиять не получается.

Александр, подскажите пожалуйста, как можно попробовать решить проблему с данными ошибками?

Источник

Глюки с Modx

Доброго времени суток!

Вчера поставил на домен новую систему модекса версии 2.5.5. Однако после установки, и заполнения контента пошли какие-то непонятные ошибки и сбои.

Я защитил свои данные в .htaccess дефолтными установками, что прилагались к установочному пакету. Кроме того, я сменил права доступа к папкам на 644 у файлов, и у папок на 755. Тем не менее возникать стали сбои в работе системы.
Сначала я грешил это на проблемы с интернетом, однако, потом после смены точки доступа, ситуация повторилась. Потому решил написать вам, в службу поддержки.

С чем это связанно?

Прикладываю еще часть логов из ядра системы.
/public_html/core/cache/logs
Там такое написано:

[2017-03-01 06:49:44] (ERROR @ /home/u464802808/public_html/core/xpdo/om/xpdoobject.class.php: 240) Error HY000 executing statement:
Array
(
[0] => HY000
[1] => 2006
[2] => MySQL server has gone away
)

[2017-03-01 06:49:31] (ERROR in xPDOConnection::connect @ /home/u464802808/public_html/core/xpdo/xpdo.class.php: 3116) SQLSTATE[42000] [1226] User ‘u464802808_sibum’ has exceeded the ‘max_user_connections’ resource (current value: 3)
[2017-03-01 06:49:44] (ERROR @ /home/u464802808/public_html/core/xpdo/om/xpdoquery.class.php: 653) Could not construct or prepare query because it is invalid or could not connect: SELECT `modExtensionPackage`.`id`, `modExtensionPackage`.`namespace`, `modExtensionPackage`.`name`, `modExtensionPackage`.`path`, `modExtensionPackage`.`table_prefix`, `modExtensionPackage`.`service_class`, `modExtensionPackage`.`service_name`, `modExtensionPackage`.`created_at`, `modExtensionPackage`.`updated_at`, Namespace.path AS namespace_path FROM `sibum_extension_packages` AS `modExtensionPackage` JOIN `sibum_namespaces` `Namespace` ON `modExtensionPackage`.`namespace` = `Namespace`.`name` ORDER BY namespace ASC
[2017-03-01 06:49:44] (ERROR @ /home/u464802808/public_html/core/xpdo/om/xpdoobject.class.php: 240) Error HY000 executing statement:
Array
(
[0] => HY000
[1] => 2006
[2] => MySQL server has gone away
)

[2017-03-01 06:49:44] (ERROR @ /home/u464802808/public_html/core/xpdo/om/xpdoobject.class.php: 240) Error HY000 executing statement:
Array
(
[0] => HY000
[1] => 2006
[2] => MySQL server has gone away
)

Когда я захожу в раздел менеджера, то там почему-то пропадают заголовки и просто невозможно бывает редактировать данные в контенте. Потому прошу помощи, чтобы решить данную проблему.

Общий лог, также диагностирует ошибки:

[01-Mar-2017 12:05:39 UTC] PHP Fatal error: Call to a member function render() on null in /home/u464802808/public_html/manager/controllers/default/welcome.class.php on line 64
[01-Mar-2017 12:57:57 UTC] PHP Fatal error: Call to a member function render() on null in /home/u464802808/public_html/manager/controllers/default/welcome.class.php on line 64
[01-Mar-2017 13:05:06 UTC] PHP Fatal error: Call to a member function render() on null in /home/u464802808/public_html/manager/controllers/default/welcome.class.php on line 64

Кроме того, иногда пишет, что страница underfined, где собственно ничего нельзя отредактировать. Помогите решить данную проблему.

Источник

Error HY000 executing statement #12826

Summary

  • modResource::getTemplateVarCollection fails using mysql server 5.7.9
  • unclear if xPDO or modx issue

Step to reproduce

  • Install modx 2.4.2 using mysql server 5.7.9
  • fail found using getResources with processing of template variables

Observed behavior

  • Template variables were not processed (empty)
  • Errorlog shows:

Expected behavior

  • no error in error log
  • processed template variables

Environment

  • MODX Revolution 2.4.2-pl (traditional)
  • ExtJS-Version: 3.4.1
  • Smarty-Version: 3.0.4
  • PHPMailer-Version: 5.2.13
  • MagpieRSS-Version: 0.72
  • MySQL Server Version: 5.7.9
  • mysql pdo driver Client API version: 5.5.46
  • PHP Version: 5.6.16-2

Notes

The issue results from the sortby statement $c->sortby(‘tvtpl.rank,modTemplateVar.rank’); used in conjunction with the DISTINCT query. tvtpl.rank is used to sort the result set but is not part of the SELECT statement.
Additionally selecting tvtpl.rank seems to fix the issue from within getTemplateVarCollection, but I am not sure that this fix belongs here. However, it fixes the issue for me. Find my fix below as a patch file:

The text was updated successfully, but these errors were encountered:

Источник

Issue during setup when using mysql instead of mariadb #5

The text was updated successfully, but these errors were encountered:

Sounds like MySQL strict mode is enabled; there are some known issues with that (though I don’t immediately know the issue numbers)

Issue appears with both mysql:5.7 and mysql:5.6
I’ve found the key mysqld —explicit_defaults_for_timestamp will check it. It seems default timestamps are deprecated since MySQL 5.6

It works with Maria, though, and only MySQL is failing?

@rthrash yes, only MySQL. With MariaDb works fine!
Probably the reason is in strict mode as Mark said. I found in my.cnf
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

I suspect the fix will be similar to the recent one that was made for MySQL
5.7 in the main Revo installer.
On Fri, Apr 22, 2016 at 2:36 PM Vadim Homchik notifications@github.com
wrote:

@rthrash https://github.com/rthrash yes, only MySQL. With MariaDb works
fine!
Probably the reason is in strict mode as Mark said. I found in my.cnf
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES


You are receiving this because you were mentioned.
Reply to this email directly or view it on GitHub
#5 (comment)

yeah! If to run mysql as mysqld —sql-mode=NO_ENGINE_SUBSTITUTION all works fine!

© 2023 GitHub, Inc.

You can’t perform that action at this time.

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.

Источник

Обновление Tickets

У меня вот такой вопрос.
Есть один сайт, сейчас он на 2.5.1. Установлен Tickets и когда выходили его обновления я их ставил. Сейчас версия пакета 1.6.17-pl. Пытаюсь снова установить обновления, они устанавливаются и все — сайт ложится.

При обновлении страниц (не админки) вот такое:

В консоли админки вот такое:

Прежде такого не было вообще. У кого-нибудь была такая фиговина?

Ложатся только те страницы, на которых вызывается Tickets. Например вот такая test.3musictver.org/kontakty/ и такая test.3musictver.org/publications/news/

Ну и на тех страницах что легли еще вот такой лог в админке:
Ткните носом, что сделать то нужно?)

Комментарии: 11

А у меня все хорошо MODX 2.5.2 Tickets 1.7.4

Расскажите о сервере, какая версия PHP/MySQL?

с какой ошибкой?
После обновления такие же ошибки или в процессе обновления пакета ошибки?

Раньше бывало что-то подобное с пакетами MODX, решалось деинсталяцией.

То есть, после установки новой версии Tickets и указания новых настроек секции, вам нужно как-то почистить старые голоса, которые были отданы после окончания рока голосования за объекты.

Для этого я написал отдельный скрипт очистки — он лежит в core/components/tickets/cron/remove_votes.php. На modx.pro он отработал за

190 сек, при этом был пересчитан рейтинг всех 54 210 комментариев (удалены лишние плюсы и минусы).

Источник

MODX Revolution и MySQL v5.7.x: проблема с сохранением значений TV-параметров

Работая с новым сайтом на движке MODX Revolution я столкнулся с проблемой невозможности сохранения значений пользовательских TV-параметров. Как оказалось, всему виной была новая версия MySQL.

Суть проблемы

Во время сохранения ресурса значения TV-параметров не сохраняются в таблице базы данных (modx_site_tmplvar_contentvalues), при этом внешне всё выглядит нормально: после сохранения в соответствующих полях отображаются обновлённые значения. Однако после перезагрузки страницы редактирования поля вновь оказываются пустыми (или заполненными значениями по умолчанию).

В файле error.log системы (раздел Управление→Отчёты→Журнал ошибок административной панели) отображается следующее сообщение об ошибке:

[2016-10-19 08:18:19] (ERROR @ /var/www/init/www/core/xpdo/om/xpdoobject.class.php : 240) Error HY000 executing statement: 
Array
(
    [0] => HY000
    [1] => 3065
    [2] => Expression #1 of ORDER BY clause is not in SELECT list, references column 'init.tvtpl.rank' which is not in SELECT list; this is incompatible with DISTINCT
)

Версия MODX Revolution: 2.5.0-pl

Версия MySQL: 5.7.15

Причина

Потратив приличное количество времени на поиск решения в интернете, я узнал, что всё дело в новой версии MySQL и её обновлённых настройках по умолчанию: задействована настройка ONLY_FULL_GROUP_BY, в результате чего перестаёт работать часть запросов MODX. Как оказалось, проблема уже известна разработчикам (описание в багтрекере MODX на GitHub: https://github.com/modxcms/revolution/issues/12826) и будет исправлена в новых версиях движка (скорее всего в версии 2.5.2-pl).

Решение

Чтобы не ждать официального релиза с исправлениями и обновлять движок, вы можете самостоятельно внести правки в файлы ядра MODX, к счастью исправлять придётся немного:

  • Файл /core/model/modx/modresource.class.php:
    		$c = $resource->xpdo->newQuery('modTemplateVar');
    		$c->query['distinct'] = 'DISTINCT';
    		$c->select($resource->xpdo->getSelectColumns('modTemplateVar', 'modTemplateVar'));
    		$c->select($resource->xpdo->getSelectColumns('modTemplateVarTemplate', 'tvtpl', '', array('rank')));
    		if ($resource->isNew()) {
    			$c->select(array(
    					'modTemplateVar.default_text AS value',

    Добавлена строка №342.

  • Файл /core/model/modx/modtemplate.class.php:
    			$c = $this->xpdo->newQuery('modTemplateVar');
    			$c->query['distinct'] = 'DISTINCT';
    			$c->select($this->xpdo->getSelectColumns('modTemplateVar'));
    			$c->select($this->xpdo->getSelectColumns('modTemplateVarTemplate', 'tvtpl', '', array('rank')));
    			$c->select(array('value' => $this->xpdo->getSelectColumns('modTemplateVar', 'modTemplateVar', '', array('default_text'))));
    			$c->innerJoin('modTemplateVarTemplate','tvtpl',array(
    				'tvtpl.tmplvarid = modTemplateVar.id',

    Добавлена строка №144.

После внесения изменений механизм сохранения значений TV-параметров должен работать нормально.

Скажу ещё, что можно просто отказаться от использования MySQL последней версии, однако не думаю, что такой способ решения проблемы придётся вам по душе.

Looks like your «post_id» attribute, which probably is your primary key, is not set to «auto increment» or is setup with «not null» in your Database. Take a look at the following ORM. Compare it with yours and fix your DB-sided error. And don’t forget to upgrade you model via. GII!

enter image description here

-- -----------------------------------------------------
-- Table `mydb`.`tbl_comment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`tbl_comment` ;

CREATE TABLE IF NOT EXISTS `mydb`.`tbl_comment` (
  `post_id` INT NOT NULL,
  `status` VARCHAR(45) NULL,
  `content` TEXT NULL COMMENT ' ',
  `author` VARCHAR(255) NULL,
  `email` VARCHAR(255) NULL,
  `url` VARCHAR(511) NULL,
  `create_time` DATETIME NULL,
  PRIMARY KEY (`post_id`))
ENGINE = InnoDB;

Else, if «post_id» is not your primary key and is not set as «auto increment» you can try this to fix it:

Solution 1) Make «post_id» set before save/update in php like:

$model = new Tbl_comment; //hope this is your Yii model name...
$model->post_id = 123

if(!$model->save()) {
   var_dump($model->errors);
}

Solution 2) Add a default value in your database ORM on attribute «post_id». (Cause i dont know your relation and ORM right.)

enter image description here

-----------------------------------------
-- Table `mydb`.`tbl_comment`
-- -----------------------------------------------------
DROP TABLE IF EXISTS `mydb`.`tbl_comment` ;

CREATE TABLE IF NOT EXISTS `mydb`.`tbl_comment` (
  `post_id` INT NULL DEFAULT someDefault,
  `status` VARCHAR(45) NULL,
  `content` TEXT NULL COMMENT ' ',
  `author` VARCHAR(255) NULL,
  `email` VARCHAR(255) NULL,
  `url` VARCHAR(511) NULL,
  `create_time` DATETIME NULL)
ENGINE = InnoDB;

Table details:

enter image description here

Понравилась статья? Поделить с друзьями:
  • Error http management port configuration not found
  • Error http error 500 savefrom
  • Error html templates
  • Error html download
  • Error hresult e fail has been returned from a call to a com component