Сидбонусы и крон

Started by Lynx on 2014-11-14 12:38 — 17 replies, 3776 views

#1
Версия TorrentPier II: 2.1.3 [ALPHA]
Версия PHP: 5.5.18-1

При включенных сидбонусах крон-задача Tracker cleanup and dlstat вываливает ошибку:
Fatal error: DB Error [library/includes/cron/jobs/tr_cleanup_and_dlstat.php(201)] in /var/www/demo/data/www/***/library/includes/core/mysql.php on line 804

Запрос в файле tr_cleanup_and_dlstat.php, на который ведёт ошибка:
DB()->query("
       UPDATE ". BB_USERS ." u, ". BB_BT_USERS ." bu, tmp_bonus b
       SET
         u.user_points  = u.user_points + $user_points,
         bu.points_today  = bu.points_today + $user_points,
         b.user_id  = 0
       WHERE
        b.user_id  =  u.user_id
         AND bu.user_id  =  u.user_id
         AND b.release_count <= $release
         AND u.user_regdate  <  $user_regdate
         AND u.user_active  =  1
         AND u.user_id  not IN(". EXCLUDED_USERS_CSV .")
     ");

Строка 201: ");

Эта ошибка уже упоминалась в другой теме: https://torrentpier.com/threads/obnovlenie-dvizhka-do-versii-2-1-r600.26147/#post-62442
Пользователь whuru избавился от неё просто выключив сидбонусы. У меня она тоже не появляется если сидбонусы выключены, но это не решение проблемы, сидбонусы важно оставить включенными.

И еще одна вещь - в админке, в настройке модов, есть настройки сидбонусов. Они у вас в дробном виде начисляются? Если да, то поправьте чтобы разделителем числа, например 0.65, была именно точка, а не запятая.
Дробные числа есть, но без запятых, везде точки.
#2
В папке log найдите файл sql_log и его содержимое приложите.
#3
В папке log найдите файл sql_log и его содержимое приложите.
#001064 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 '0025, bu.points_today = bu.points_today + 0,0025, b.user_id ' at line 3

UPDATE bb_users u, bb_bt_users bu, tmp_bonus b SET u.user_points = u.user_points + 0,0025, bu.points_today = bu.points_today + 0,0025, b.user_id = 0 WHERE b.user_id = u.user_id AND bu.user_id = u.user_id AND b.release_count <= 1 AND u.user_regdate < 1415975027 AND u.user_active = 1 AND u.user_id not IN(-1,-746)

Source  : library/includes/cron/jobs/tr_cleanup_and_dlstat.php(201) :: db1.demo
IP  : ******
Date  : 2014-11-14 17:24:06
Agent  : Mozilla/5.0 (Linux x86_64) Gecko/ Firefox/24.0 Iceweasel/24.4.0
Req_URI : /admin/admin_cron.php
Referer : http://***/admin/admin_cron.php?mode=list
Method  : POST
PID  : 10029
Request : Array
(
  [mode] => list
  [cron_enabled] => 1
  [cron_check_interval] => 300
  [select] => Array
  (
  [0] => 3
  [1] => 4
  [2] => 5
  [3] => 6
  [4] => 7
  [5] => 8
  [6] => 9
  [7] => 11
  [8] => 12
  [9] => 13
  [10] => 14
  [11] => 15
  [12] => 16
  [13] => 17
  [14] => 18
  [15] => 19
  [16] => 20
  [17] => 21
  [18] => 22
  [19] => 23
  )

  [cron_action] => run
  [confirm] => 1
  [submit] => Отправить
)
#4
0,0025
Опять же - запятые. Поправьте что-нибудь чтобы пересохранилось или в базе напрямую на точки.
#5
Опять же - запятые. Поправьте что-нибудь чтобы пересохранилось или в базе напрямую на точки.
Бесполезно. Крон всё равно выдаёт ту же ошибку.

Ошибка ушла только после таких изменений:
Найти
u.user_points       = u.user_points + $user_points,
bu.points_today     = bu.points_today + $user_points,

заменить
u.user_points       = u.user_points + '$user_points',
bu.points_today     = bu.points_today + '$user_points',
#6
Я наверное что-то не понимаю...
u.user_points       = u.user_points + '$user_points',
bu.points_today     = bu.points_today + '$user_points',
Как можно складывать числа и строки символов? ... и это корректно работает в движке?
#7
Бесполезно. Крон всё равно выдаёт ту же ошибку.
В базе напрямую у вас что? Запятые, точки?
и это корректно работает в движке?
При чем тут чей-то совет и то что в движке? В движке вариант без сложения сладкого с соленым.
#8
В базе напрямую у вас что? Запятые, точки?
В базе точки, запятых и не было. Я и настройки сидбонусов сбрасывал и заново вписывал - тоже не помогло.
#9
@Lynx содержимое файла includes/cron/jobs/tr_cleanup_and_dlstat.php приложите, пожалуйста.
#10
tr_cleanup_and_dlstat.php:
Spoiler content hidden.

По сравнению с исходным файлом движка изменено только тут:
 u.user_points  = u.user_points + $user_points,
         bu.points_today  = bu.points_today + $user_points,