Перейти к контенту
  • 0

[MySQL 5.7] Директивы нормальной работы


dimitry

Вопрос

Многие уже давно подстроили ipb 1.3.1 под MySQL 5.x, однако с выходом MySQL 5.7 возникают ошибки БД:
1)

Ошибка mysql sql_mode=only_full_group_by

на индексной странице получил подарок:

mySQL query error: SELECT g.*, m.* FROM ibf_members m LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup) WHERE m.last_activity >= '1471640400' AND m.mgroup <> '2' GROUP BY m.name ORDER BY m.last_activity DESC

mySQL error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.g.g_id' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
mySQL error code: 

На showtopic получил:

mySQL query error: SELECT p.*,
                        m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number,
                        m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn,
                        g.g_id, g.g_title, g.g_icon, g.g_dohtml, s.login_type, s.running_time, g.g_hide_from_list, g.g_can_view_on_off
                        FROM ibf_posts p
                          LEFT JOIN ibf_members m ON (p.author_id=m.id)
                          LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
                          LEFT JOIN ibf_sessions s ON (s.member_id=p.author_id AND s.member_id<>0 AND s.member_id IS NOT NULL)
                          LEFT JOIN ibf_pfields_content pc ON (pc.member_id=p.author_id)
                        WHERE p.topic_id=473 and p.queued != 1
                        GROUP BY pid ORDER BY p.post_date asc LIMIT 0, 30

mySQL error: Expression #48 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.s.login_type' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

или:

mySQL query error: SELECT p.*,
m.id,m.name,m.mgroup,m.email,m.joined,m.avatar,m.avatar_size,m.posts,m.aim_name,m.icq_number,
m.signature, m.website,m.yahoo,m.integ_msg,m.title,m.hide_email,m.msnname, m.warn_level, m.warn_lastwarn,
g.g_id, g.g_title, g.g_icon, g.g_dohtml, s.login_type, s.running_time, g.g_hide_from_list, g.g_can_view_on_off
FROM ibf_posts p
LEFT JOIN ibf_members m ON (p.author_id=m.id)
LEFT JOIN ibf_groups g ON (g.g_id=m.mgroup)
LEFT JOIN ibf_sessions s ON (s.member_id=p.author_id AND s.member_id<>0 AND s.member_id IS NOT NULL)
LEFT JOIN ibf_pfields_content pc ON (pc.member_id=p.author_id)
WHERE p.topic_id=527 and p.queued != 1
GROUP BY pid ORDER BY p.post_date asc LIMIT -30, 30

mySQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-30, 30' at line 11
mySQL error code:
Date: Tuesday 24th 2020f March 2020 02:11:04 AM

на showforum получил ошибку неявной записи:

mySQL query error: UPDATE ibf_sessions SET member_name='',member_id='0',member_group='2',login_type='0', running_time='1471718686', in_forum='332', in_topic='', location='SF,,' WHERE id='a85128f6bfeb1d83f6d48b296562257d'

mySQL error: Incorrect integer value: '' for column 'in_topic' at row 1
mySQL error code: 

Постинговые, вроде, открываются. Например, вот такое: index.php?act=Post&CODE=06&f=332&t=473&p=714
При этом предпросмотр работает, а при отправке данных - ошибка БД абсолютно без информации в окне.

admin.php и индексная там - открываются. При этом страницы многих пунктов меню открываются, а, например, Настройка языков выдает ошибку:

mySQL query error: select ibf_languages.*, count(ibf_members.id) as mcount from ibf_languages left join ibf_members on(ibf_members.language=ibf_languages.ldir) where (ibf_members.language is not null or ibf_members.language = 'en') group by ibf_languages.ldir order by ibf_languages.lname

mySQL error: Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ddd.ibf_languages.lid' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

В MySQL 5.6 все работает. Как видно, в 5.7 надо решать вопросы нововведений, из-за которых идут ошибки

Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column

https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html

Решение:

Периодические запросы в БД:


SET GLOBAL sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''))

Решение для сервера:

mysql_my.ini
Прописать под директивой [mysqld]
режим sql, не включающий режима only full group by:
sql_mode = "STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
или, в крайнем случае, что не есть здорово:
sql-mode=""

Если без сервера, то пока так (верно или нет - не знаю):
 
Topics.php

Найти: 1 или 2 раза:

GROUP BY pid ORDER BY p.{$ibforums->vars['post_order_column']} {$ibforums->vars['post_order_sort']} LIMIT $first, ".$ibforums->vars['display_max_posts']);

внутри заменить 

LIMIT $first

 на 

LIMIT 0
Изменено пользователем dimitry
Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Теперь по поводу совместимости установочного скрипта форума IPB 1.3.1 sm_install.php

1) Безусловно:

Найти везде:

TYPE=MyISAM
Заменить везде на:

ENGINE=MyISAM
2) Ошибка specified key was too long; max key length is 1000 bytes mysql

 

Решение пока такое:

 

Найти везде:

varchar(255)
Заменить везде на:

varchar(128)
sm_install.php Изменено пользователем dimitry
Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.