Karma mod by m157y

Поддержка старых модов или модов, созданных авторами не из нашего сообщества, а также любые вопросы, связанные с модами для phpBB 3.0.x, кроме относящихся к форуму Для авторов (phpBB 3.0.x).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Лейтенант, Версия Кармы какая?
В таблице _posts у поля post_karma_search свойства какие? (NotNull, Default)

UPD: У меня такой ошибки не возникает хотя бы потому, что в моей версии в ACP нет функции удаления кармы.
Но чисто теоретически могу предложить три варианта.
1. Можно предположить, что после установки мода новые колонки содержат значение Null
Исправляем все скопом.

Код: Выделить всё

UPDATE phpbb_posts SET post_karma=0 WHERE post_karma IS NULL 
Префикс phpbb_ заменить на свой.
Повторить для колонок post_karma_powered, post_karma_count

Скорее всего придется повторить для таблицы _topics, колонки topic_karma, topic_karma_powered, topic_karma_count

2. Можно предположить, что происходит деление на 0, а в БД установлено STRICT_ALL_TABLES или STRICT_TRANS_TABLES
Проверить можно, выполнив запрос

Код: Выделить всё

SELECT @@SESSION.sql_mode
Открываем используемый сервером файл настройки (чаще всего my.ini), ищем строку

Код: Выделить всё

sql-mode = 'STRICT_ALL_TABLES'
или там будет 'STRICT_TRANS_TABLES', или 'TRADITIONAL' если сообщение об ошибке содержит фразу о делении на ноль.
Меняем на

Код: Выделить всё

sql-mode = ''
или удаляем строку полностью.
Перезапускаем сервер.

3. Обработать программно (если ничего не помогло)
Здесь есть два варианта:
3a. простой:
Открыть root\includes\mods\acp\acp_karma.php
Найти в строке (221):

Код: Выделить всё

$sql = 'UPDATE ' . POSTS_TABLE . '
Заменить на:

Код: Выделить всё

$sql = 'UPDATE IGNORE ' . POSTS_TABLE . '
Скорее всего также придется поступить с запросом к таблице _topics (строка 230)

3b. чуть сложнее:
Открыть root\includes\mods\acp\acp_karma.php
Найти в строке (222):

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
Заменить на:

Код: Выделить всё

post_karma_search = IFNULL((post_karma / post_karma_count), 0)
Скорее всего также придется поступить с

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
Скорее всего также придется поступить с запросом к таблице _topics (строка 231)

Скорее всего такие же изменения (по пункту 3) придется внести изменения в функции пресчета кармы в модуле root\includes\mods\functions_karma.php
Последний раз редактировалось TomAlex 21.08.2011 5:21, всего редактировалось 10 раз.
Аватара пользователя
Лейтенант
phpBB 1.4.2
Сообщения: 59
Стаж: 17 лет 2 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Karma mod by m157y

Сообщение Лейтенант »

TomAlex
Лейтенант, Версия Кармы какая?
В таблице _posts у поля post_karma_search свойства какие? (NotNull, Default)
Значение Null=Yes
Default=0
http://[censor].us/photo/my-images/585/90323713.jpg/

Karma MOD 1.2.3

Добавлено спустя 22 минуты 51 секунду:
TomAlex

что-то не помагает.
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Сделайте запрос на выборку из таблицы posts и покажите значения в полях post_karma, post_karma_powered, post_karma_count
Или выложите дампы таблиц posts и topics
Аватара пользователя
Лейтенант
phpBB 1.4.2
Сообщения: 59
Стаж: 17 лет 2 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Karma mod by m157y

Сообщение Лейтенант »

Вот эти две таблицы:
http://rghost.ru/18550161

И, на всякий случай, код моей ошибки:

Код: Выделить всё

SQL ERROR [ mysql4 ]

Data truncated for column 'post_karma_search' at row 1 [1265]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 5, post_karma_count = post_karma_count - 1, post_karma_search = (post_karma / post_karma_count), post_karma_search_powered = (post_karma_powered / post_karma_count) WHERE post_id = 2

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/mods/acp/acp_karma.php
LINE: 224
CALL: dbal_mysql->sql_query()

FILE: includes/functions_module.php
LINE: 516
CALL: acp_karma->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Плин, Лейтенант...
На всякий случай!
Вы сами не видите разницы?
И эта ошибка была с самого начала? Или появилась после экспериментов?
Версия MySQL какая?
Аватара пользователя
Лейтенант
phpBB 1.4.2
Сообщения: 59
Стаж: 17 лет 2 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Karma mod by m157y

Сообщение Лейтенант »

Это текущая моя ошибка. После экспериментов я восстановил БД. Поэтому она же и начальная.
MySQL 5.0.45-community-nt (на Денвере).
Если я что напутал, то не со зла. :|
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Попробуйте:
1. Изменить тип полей
post_karma
post_karma_powered
post_karma_search
post_karma_search_powered
на INT(8)

2. Обработать программно (если не поможет)
Открыть root\includes\mods\acp\acp_karma.php
Найти в строке (222):

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
Заменить на:

Код: Выделить всё

post_karma_search = TRUNCATE((post_karma / post_karma_count), 0)
Скорее всего также придется поступить с

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
Ремарка по поводу таблицы _topics (стр. 231) и модуля root\includes\mods\functions_karma.php
остается в силе.
Аватара пользователя
Лейтенант
phpBB 1.4.2
Сообщения: 59
Стаж: 17 лет 2 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Karma mod by m157y

Сообщение Лейтенант »

TomAlex, большое спасибо, что возитесь со мной.
Скажите, а это выполнять надо?
TomAlex писал(а): 2. Обработать программно (если не помог первый вариант)
Открыть root\includes\mods\acp\acp_karma.php
Найти в строке (222):

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
Заменить на:

Код: Выделить всё

post_karma_search = IFNULL((post_karma / post_karma_count), 0)
Скорее всего также придется поступить с

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
Скорее всего также придется поступить с запросом к таблице _topics (стр. 231)
Скорее всего придется внести изменения в функции пресчета кармы в модуле root\includes\mods\functions_karma.php
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Нет, это к другой ошибке :)
Обязательно напишите, заработало ли, и какой из вариантов помог?
Аватара пользователя
Лейтенант
phpBB 1.4.2
Сообщения: 59
Стаж: 17 лет 2 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Karma mod by m157y

Сообщение Лейтенант »

Ну вот, мой подробный отчем мытарств с Кармой:
Изначальная ошибка:

Код: Выделить всё

SQL ERROR [ mysql4 ]

Data truncated for column 'post_karma_search' at row 1 [1265]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 5, post_karma_count = post_karma_count - 1, post_karma_search = (post_karma / post_karma_count), post_karma_search_powered = (post_karma_powered / post_karma_count) WHERE post_id = 2

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/mods/acp/acp_karma.php
LINE: 224
CALL: dbal_mysql->sql_query()

FILE: includes/functions_module.php
LINE: 516
CALL: acp_karma->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
Тогда делаю последовательно обновления к БД:
UPDATE phpbb_posts SET post_karma=0 WHERE post_karma IS NULL
UPDATE phpbb_posts SET post_karma_powered=0 WHERE post_karma_powered IS NULL
UPDATE phpbb_posts SET post_karma_count=0 WHERE post_karma_count IS NULL
UPDATE phpbb_topics SET topic_karma=0 WHERE topic_karma IS NULL
UPDATE phpbb_topics SET topic_karma_powered=0 WHERE topic_karma_powered IS NULL
UPDATE phpbb_topics SET topic_karma_count=0 WHERE topic_karma_count IS NULL
Обновляю кэш. Пробую удалить репутацию. Ошибка:

Код: Выделить всё

QL ERROR [ mysql4 ]

Data truncated for column 'post_karma_search' at row 1 [1265]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 1, post_karma_count = post_karma_count - 1, post_karma_search = (post_karma / post_karma_count), post_karma_search_powered = (post_karma_powered / post_karma_count) WHERE post_id = 4

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/mods/acp/acp_karma.php
LINE: 224
CALL: dbal_mysql->sql_query()

FILE: includes/functions_module.php
LINE: 516
CALL: acp_karma->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
Нахожу в includesmodsacpacp_karma.php

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search = IFNULL((post_karma / post_karma_count)0)
нахожу

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search_powered = IFNULL((post_karma_powered / post_karma_count)0)
нахожу:

Код: Выделить всё

topic_karma_search = ((topic_karma / topic_karma_count) / (topic_replies + 1))
заменяю на
нахожу:

Код: Выделить всё

topic_karma_search = IFNULL(((topic_karma / topic_karma_count) / (topic_replies + 1))0)
нахожу:

Код: Выделить всё

topic_karma_search_powered = ((topic_karma_powered / topic_karma_count) / (topic_replies + 1))
заменяю на

Код: Выделить всё

topic_karma_search_powered = IFNULL(((topic_karma_powered / topic_karma_count) / (topic_replies + 1))0)
Нахожу в includesmodsacpacp_karma.php

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search = IFNULL((post_karma / post_karma_count)0)
нахожу

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search_powered = IFNULL((post_karma_powered / post_karma_count)0)
нахожу:

Код: Выделить всё

topic_karma_search = ((topic_karma / topic_karma_count) / (topic_replies + 1))
заменяю на
нахожу:

Код: Выделить всё

topic_karma_search = IFNULL(((topic_karma / topic_karma_count) / (topic_replies + 1))0)
нахожу:

Код: Выделить всё

topic_karma_search_powered = ((topic_karma_powered / topic_karma_count) / (topic_replies + 1))
заменяю на

Код: Выделить всё

topic_karma_search_powered = IFNULL(((topic_karma_powered / topic_karma_count) / (topic_replies + 1))0)
Затем ошибка:

Код: Выделить всё

SQL ERROR [ mysql4 ]

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 '0), post_karma_search_powered = IFNULL((post_karma_powered / post_karma_count)0)' at line 2 [1064]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 5, post_karma_count = post_karma_count - 1, post_karma_search = IFNULL((post_karma / post_karma_count)0), post_karma_search_powered = IFNULL((post_karma_powered / post_karma_count)0) WHERE post_id = 2

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/mods/acp/acp_karma.php
LINE: 224
CALL: dbal_mysql->sql_query()

FILE: includes/functions_module.php
LINE: 516
CALL: acp_karma->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
Добавлено спустя 21 минуту 26 секунд:
Вторая попытка:

1. Восстанавливаю БД.

2. Изменяю тип полей в таблице posts:
Изменить тип полей
post_karma
post_karma_powered
post_karma_search
post_karma_search_powered
на INT(8)


Получаю ошибку:

Код: Выделить всё

SQL ERROR [ mysql4 ]

Out of range value adjusted for column 'post_karma_count' at row 1 [1264]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 5, post_karma_count = post_karma_count - 1, post_karma_search = (post_karma / post_karma_count), post_karma_search_powered = (post_karma_powered / post_karma_count) WHERE post_id = 5

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/mods/acp/acp_karma.php
LINE: 224
CALL: dbal_mysql->sql_query()

FILE: includes/functions_module.php
LINE: 516
CALL: acp_karma->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
Нахожу в \includes\mods\acp\acp_karma.php

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search = IFNULL((post_karma / post_karma_count)0)
нахожу

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search_powered = IFNULL((post_karma_powered / post_karma_count)0)
нахожу:

Код: Выделить всё

topic_karma_search = ((topic_karma / topic_karma_count) / (topic_replies + 1))
заменяю на
нахожу:

Код: Выделить всё

topic_karma_search = IFNULL(((topic_karma / topic_karma_count) / (topic_replies + 1))0)
нахожу:

Код: Выделить всё

topic_karma_search_powered = ((topic_karma_powered / topic_karma_count) / (topic_replies + 1))
заменяю на

Код: Выделить всё

topic_karma_search_powered = IFNULL(((topic_karma_powered / topic_karma_count) / (topic_replies + 1))0)
Нахожу в \includes\mods\acp\acp_karma.php

Код: Выделить всё

post_karma_search = (post_karma / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search = TRUNCATE((post_karma / post_karma_count)0)
нахожу

Код: Выделить всё

post_karma_search_powered = (post_karma_powered / post_karma_count)
заменяю на

Код: Выделить всё

post_karma_search_powered = TRUNCATE((post_karma_powered / post_karma_count)0)
нахожу:

Код: Выделить всё

topic_karma_search = ((topic_karma / topic_karma_count) / (topic_replies + 1))
заменяю на
нахожу:

Код: Выделить всё

topic_karma_search = TRUNCATE(((topic_karma / topic_karma_count) / (topic_replies + 1))0)
нахожу:

Код: Выделить всё

topic_karma_search_powered = ((topic_karma_powered / topic_karma_count) / (topic_replies + 1))
заменяю на

Код: Выделить всё

topic_karma_search_powered = TRUNCATE(((topic_karma_powered / topic_karma_count) / (topic_replies + 1))0)
Снова ошибка:

Код: Выделить всё

SQL ERROR [ mysql4 ]

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 '0), post_karma_search_powered = TRUNCATE((post_karma_powered / post_karma_count)' at line 2 [1064]

SQL

UPDATE phpbb_posts SET post_karma = post_karma - 1, post_karma_powered = post_karma_powered - 5, post_karma_count = post_karma_count - 1, post_karma_search = TRUNCATE((post_karma / post_karma_count)0), post_karma_search_powered = TRUNCATE((post_karma_powered / post_karma_count)0) WHERE post_id = 5

BACKTRACE

FILE: includes/db/mysql.php
LINE: 174
CALL: dbal->sql_error()

FILE: includes/mods/acp/acp_karma.php
LINE: 224
CALL: dbal_mysql->sql_query()

FILE: includes/functions_module.php
LINE: 516
CALL: acp_karma->main()

FILE: adm/index.php
LINE: 74
CALL: p_master->load_active()
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Везде одна ошибка: пропущена запятая

Код: Выделить всё

post_karma_search = IFNULL((post_karma / post_karma_count), 0)
Кстати, выполните, пожалуйста запрос к БД:

Код: Выделить всё

SELECT @@SESSION.sql_mode
Какой будет результат?

Добавлено спустя 7 минут 45 секунд:
Лейтенант писал(а):Получаю ошибку:
SQL ERROR [ mysql4 ]
Out of range value adjusted for column 'post_karma_count' at row 1 [1264]
Вы умудрились изменить тип поля 'post_karma_count' на UNSIGNED.
Это поле не надо было трогать.
Проверяйте.
Аватара пользователя
Лейтенант
phpBB 1.4.2
Сообщения: 59
Стаж: 17 лет 2 месяца
Благодарил (а): 2 раза
Поблагодарили: 2 раза

Re: Karma mod by m157y

Сообщение Лейтенант »

Спасибо за помощь.
Только я пожалуй переключусь на User Reputation Points. С ним у меня как-то лучше выходит.
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

Лейтенант, где же воля к победе?!
Я считаю, этот мод стОит мучений. :)
Вы еще версию 1.4 и 1.5 не видели :)
Аватара пользователя
Alecto
phpBB 3.0.12
Сообщения: 2857
Стаж: 16 лет 9 месяцев
Откуда: Украина! Харьков
Благодарил (а): 80 раз
Поблагодарили: 292 раза

Re: Karma mod by m157y

Сообщение Alecto »

TomAlex писал(а): где же воля к победе?
причем здесь это? по-моему, достаточно следовать инструкциям установки
TomAlex
phpBB 1.4.4
Сообщения: 117
Стаж: 15 лет 7 месяцев
Благодарил (а): 2 раза
Поблагодарили: 20 раз

Re: Karma mod by m157y

Сообщение TomAlex »

А... ну-ну... Microsoft вам в помощь.
Сорри за флуд, не удержался.

Вернуться в «Поддержка модов для phpBB 3.0.x»