Биллинговая система Nodeny

Главная категория => Nodeny Plus => Тема начата: tom от 21 Июня 2018, 13:47:37



Название: Баги N+
Отправлено: tom от 21 Июня 2018, 13:47:37
Не знаю куди писати, тому створив нову тему.

Баг в точках топології. Якщо робиш фільтр по назві, що нам пропонується зліва в стовбчику і якщо список точок більше ніж на одну сторінку - то не можливо вибрати 2 та N сторінку, викидує в загальний список.

Прошу пофіксити )) дякую


Название: Re: Баги N+
Отправлено: tom от 21 Июня 2018, 15:35:39
Баг №2

При використанні фільтра, наприклад Група+Місто - в верхньому кутку видає не вірну сумму клієнтів. І якщо листати по сторінка, кожна сторінка не повністю заповнена клієнтами. Тобто на першій 20кл, на друій може буит 5, на третій 14. Сума, гадаю, тому й не вірно рахується..  Прошу перевірити.


Название: Re: Баги N+
Отправлено: Efendy от 21 Июня 2018, 15:37:10
Баг №2

При використанні фільтра, наприклад Група+Місто - в верхньому кутку видає не вірну сумму клієнтів. І якщо листати по сторінка, кожна сторінка не повністю заповнена клієнтами. Тобто на першій 20кл, на друій може буит 5, на третій 14. Сума, гадаю, тому й не вірно рахується..  Прошу перевірити.
покажи основной sql-запрос из дебага


Название: Re: Баги N+
Отправлено: tom от 21 Июня 2018, 15:39:19
Краще так
h t tps://pastebin.com/5N4UdDaP


Название: Re: Баги N+
Отправлено: Efendy от 21 Июня 2018, 15:42:02
Если в консоли mysql выполнить этот sql, будут записи с одинаковыми uid? Только скопируй этот sql  при выборе 2й страницы


Название: Re: Баги N+
Отправлено: tom от 21 Июня 2018, 15:59:11
Який саме запит? ))
а це не може бути причиною?
SELECT * FROM data0 WHERE uid IN(30809,30809,30809,30808,30808,30808,30808,30808,30808,30808,30808,30808,30808,30807,30807,30807,30807,30807,30807,30807)
Строк: 30. Время выполнения sql: 0.0010 сек
тут деякі уіди по 4 і більше разів повторюються.


Название: Re: Баги N+
Отправлено: Efendy от 21 Июня 2018, 16:04:50
Код:
SELECT SQL_CALC_FOUND_ROWS u.* FROM fullusers u LEFT JOIN data0 d ON u.id=d.uid
WHERE u.grp=57 AND d._adr_city='Іванків ПС' ORDER BY u.grp, u.id DESC LIMIT 20, 40;


Название: Re: Баги N+
Отправлено: tom от 21 Июня 2018, 16:08:14
mysql> SELECT id,uid,_adr_city FROM data0 WHERE uid=30809;
+-------+-------+---------------------+
| id    | uid   | _adr_city           |
+-------+-------+---------------------+
| 33870 | 30809 | Іванків ПС          |
| 33938 | 30809 | Іванків ПС          |
| 34006 | 30809 | Іванків ПС          |
| 34083 | 30809 | Іванків ПС          |
| 34151 | 30809 | Іванків ПС          |
| 34219 | 30809 | Іванків ПС          |
| 34287 | 30809 | Іванків ПС          |
| 34355 | 30809 | Іванків ПС          |
| 34423 | 30809 | Іванків ПС          |
| 34491 | 30809 | Іванків ПС          |
+-------+-------+---------------------+
10 rows in set (0.00 sec)

Я так розумію, це не є гуд. Схоже це зявилося після переносу csv.pl. І кількість повторів - дорівнює кількості разів, скільки я запускав цей скрипт для клієнта
Це походу тре придумати як убрати дублі, або костильнути LIMIT, або і те і інше


Название: Re: Баги N+
Отправлено: tom от 21 Июня 2018, 16:24:48
Хоча скрипт би не мав це робити в останній версії, може це було зі старою версією?
        my $rows = Db->do("INSERT INTO data0 SET $sql ON DUPLICATE KEY UPDATE $sql", @sql_param, @sql_param);
    $rows < 1 && die 'sql error';
    $rows = Db->do("UPDATE data0 SET $sql WHERE uid=?", @sql_param,$uid);
    $rows < 1 && die 'sql error';


Название: Re: Баги N+
Отправлено: Efendy от 21 Июня 2018, 16:29:01
У тебя некорректная таблица data0 - в ней нет уникальности на поле uid. Убрать дубли проще всего создав корректную таблицу с другим именем. Сделать INSERT ... FROM (SELECT .... GROUP BY uid), затем дропнуть  data0 и переименовать новую таблицу


Название: Re: Баги N+
Отправлено: tom от 21 Июня 2018, 16:33:43
Якщо я вірно зрозумів то потрібно робити так
CREATE TABLE `data0` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `uid` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE (`uid`),
  KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Тоді мабуть варто поправити це в інсталі?


Название: Re: Баги N+
Отправлено: Efendy от 23 Июня 2018, 14:46:13
Не знаю куди писати, тому створив нову тему.

Баг в точках топології. Якщо робиш фільтр по назві, що нам пропонується зліва в стовбчику і якщо список точок більше ніж на одну сторінку - то не можливо вибрати 2 та N сторінку, викидує в загальний список.

Прошу пофіксити )) дякую
Пофиксил. Скачай заново модуль карт (не Яндекс, а общий модуль)


Название: Re: Баги N+
Отправлено: Efendy от 23 Июня 2018, 14:50:23
Якщо я вірно зрозумів то потрібно робити так
CREATE TABLE `data0` (
  `id` bigint(20) unsigned NOT NULL auto_increment,
  `uid` int(10) unsigned NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE (`uid`),
  KEY `uid` (`uid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Тоді мабуть варто поправити це в інсталі?
эта уникальность нужна только когда данные переносятся со старых биллингов. N+ не вставляет записи в data0, а всегда только апдейтит их. Ну кроме ситуации когда создается учетная запись

В скрипте переноса данных с n50:

Код:
ALTER TABLE `data0` ADD UNIQUE `temp` (`uid`);

перенос данных

ALTER TABLE `data0` DROP INDEX `temp`;


Название: Re: Баги N+
Отправлено: tom от 24 Июня 2018, 17:55:00
Не знаю куди писати, тому створив нову тему.

Баг в точках топології. Якщо робиш фільтр по назві, що нам пропонується зліва в стовбчику і якщо список точок більше ніж на одну сторінку - то не можливо вибрати 2 та N сторінку, викидує в загальний список.

Прошу пофіксити )) дякую
Пофиксил. Скачай заново модуль карт (не Яндекс, а общий модуль)

Дякую, працює


Название: Re: Баги N+
Отправлено: tom от 26 Июня 2018, 02:39:31
У тебя некорректная таблица data0 - в ней нет уникальности на поле uid. Убрать дубли проще всего создав корректную таблицу с другим именем. Сделать INSERT ... FROM (SELECT .... GROUP BY uid), затем дропнуть  data0 и переименовать новую таблицу
Та ж фігня, коли роблю фільтр по "Ip в історії авторизацiй". Але тут трішки інша історія, мені здається
mysql> SELECT DISTINCT uid, ip FROM auth_log WHERE uid=30764;
+-------+-----------+
| uid   | ip        |
+-------+-----------+
| 30764 | 168388910 |
| 30764 | 168390465 |
| 30764 | 168389712 |
| 30764 | 168394356 |
| 30764 | 168388471 |
| 30764 | 168390706 |
| 30764 | 168394014 |
| 30764 | 168394360 |
| 30764 | 168393843 |
| 30764 | 168395151 |
| 30764 | 168388972 |
| 30764 | 168364298 |
| 30764 | 168388620 |
| 30764 | 168389969 |
| 30764 | 168391443 |
| 30764 | 168388985 |
| 30764 | 168390336 |
| 30764 | 168395049 |
| 30764 | 168392857 |
| 30764 | 168365647 |
| 30764 | 168392824 |
| 30764 | 168391885 |
| 30764 | 168363093 |
| 30764 | 168393193 |
+-------+-----------+
24 rows in set (0.00 sec)


Название: Re: Баги N+
Отправлено: Efendy от 26 Июня 2018, 10:31:08
В некоторых ситуациях без больших усилий не получится корректно поделить поиск по страницам, таких случаев не много, но придется с этим смириться.