Перейти к содержимому


Фотография

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

Форумы IBResource

  • Авторизуйтесь для ответа в теме
В теме одно сообщение
dimitry
  • Участники
  • Cообщений: 209

Отправлено

Многие уже давно подстроили 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.co...y-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: 25 Март 2020 - 21:16


dimitry
  • Участники
  • Cообщений: 209

Отправлено

Теперь по поводу совместимости установочного скрипта форума 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   120,73К   1 скачиваний

Сообщение отредактировал dimitry: 26 Март 2020 - 00:33





Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных