Перейти к контенту
  • 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
Ссылка на комментарий
Поделиться на других сайтах

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

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

Гость
Ответить на вопрос...

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

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

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

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

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

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

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

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