Ошибки активов с MySQL 5.7.X

У меня возникли проблемы со старыми EE-узлами на моей машине разработки, теперь я запускаю более новые версии PHP и MySQL. Я смог отсортировать большинство из них, за исключением следующих ошибок MySQL из модуля «Активы».

Эта ошибка отображается при попытке просмотреть поле «Активы» в администраторе:

 A Database Error Occurred
 Error Number: 3065

 Expression #1 of ORDER BY clause is not in SELECT list, references column 'mysite.ae.sort_order' which is not in SELECT list; this is incompatible with DISTINCT

 SELECT DISTINCT a.source_type, a.folder_id, a.file_name, a.file_id, af.source_id, af.filedir_id FROM exp_assets_files AS a INNER JOIN exp_assets_selections AS ae ON ae.file_id = a.file_id INNER JOIN exp_assets_folders AS af ON af.folder_id = a.folder_id WHERE ae.col_id = '1' AND ae.row_id = '115' AND ae.entry_id = '36' AND ae.field_id = '2' ORDER BY ae.sort_order

 Filename: third_party/assets/ft.assets.php

 Line Number: 682

Эта ошибка отображается во внешнем интерфейсе при использовании тегов пары полей свойства.

Error Number: 3065

Expression #1 of ORDER BY clause is not in SELECT list, references column 'mysite.ae.sort_order' which is not in SELECT list; this is incompatible with DISTINCT

SELECT DISTINCT a.* FROM exp_assets_files AS a INNER JOIN exp_assets_folders AS af ON af.folder_id = a.folder_id INNER JOIN exp_assets_selections AS ae ON ae.file_id = a.file_id WHERE ae.entry_id = "28" AND ae.field_id = "2" AND ae.col_id = "1" AND ae.row_id = "107" AND ae.is_draft = 0 ORDER BY ae.sort_order

Filename: third_party/assets/ft.assets.php

Line Number: 1538

Я использую:

  • EE 2.11.2
  • Активы 2.6
  • MySQL 5.7.9
  • PHP 5.5.30

It looks like EE had some compatibility issues with MySQL 5.7 and I wonder if this is related. https://support.ellislab.com/bugs/detail/21444/a-database-error-occurred-this-is-incompatible-with-distinct-mysql-5.7.10

Любая помощь могла бы быть полезна.

4
nl ja de
Я просто столкнулся с этим также с теми же номерами версий. Любая помощь может быть оценена!
добавлено автор Karl Seguin, источник

1 ответы

Проблема в том, что многие разработчики не знают, как писать совместимые SQL-заявления - они являются разработчиками программного обеспечения, которые также выполняют роль разработчиков баз данных. Эта проблема возникает во многих дополнениях и недавно была зафиксирована в коде ядра EE.

Для активов v2.6 Измените строку 615 ft.assets.php

ИЗ:

$sql = "SELECT DISTINCT a.source_type, a.folder_id, a.file_name, a.file_id, af.source_id, af.filedir_id

TO:

$sql = "SELECT DISTINCT  a.source_type, a.folder_id, a.file_name, a.file_id, af.source_id, af.filedir_id, ae.sort_order

И линия 1505

ИЗ:

$sql = 'SELECT DISTINCT a.* FROM exp_assets_files AS a

TO:

$sql = 'SELECT DISTINCT a.*, ae.sort_order FROM exp_assets_files AS a
4
добавлено
Отличный ответ, Пол. Это просто избавило меня от скуки времени на DigitalOcean, развернутом Assets v2.6.
добавлено автор dibson, источник
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw