Биллинговая система Nodeny
18 Апреля 2024, 06:54:49 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 12 13 [14] 15 16
  Печать  
Автор Тема: Миграция с 50.32  (Прочитано 59246 раз)
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #195 : 07 Ноября 2018, 16:17:50 »

Поле ip адрес:
  • в таблице ip_pool - это реально привязанный к учетке ip
  • в таблице mac_uid - он временно используется системой в ситуации когда выдан ip по неизвестному маку, потом после ввода логина и пароля этот ip привязывается как динамический в таблице ip_pool. На странице "подключения" тоже можно ввести ip и он будет записан в mac_uid, но это пока тестовая вещь и пока не дотестирована.
Тебе не нужно переносить ip в mac_uid, а только в ip_pool. В mac_uid ставь ip=0.


Так я хочу маки перенести, айпи перенеслись стандартным скриптом.

В табилце ip_pool вижу такую картину, здесь нету поля для мак адреса:

Код:
mysql> select * from ip_pool limit 10;
+----+------------+--------+--------+---------+------+------+
| id | ip         | type   | realip | release | uid  | tags |
+----+------------+--------+--------+---------+------+------+

Исходя из структуры таблицы mac_uid, то мне нужно сюда перенести.
Код:
mysql> show columns from mac_uid;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| id          | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| mac         | varchar(12)         | YES  | UNI | NULL    |                |
| ip          | int(10) unsigned    | NO   | MUL | NULL    |                |
| uid         | bigint(20) unsigned | NO   | MUL | NULL    |                |
| time        | int(10) unsigned    | NO   | MUL | NULL    |                |
| device_mac  | varchar(12)         | NO   |     | NULL    |                |
| device_port | smallint(6)         | NO   |     | NULL    |                |
| oneconnect  | tinyint(4)          | NO   |     | 0       |                |
| comment     | varchar(256)        | YES  |     | NULL    |                |
+-------------+---------------------+------+-----+---------+----------------+

Что я делаю не так?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #196 : 07 Ноября 2018, 17:19:47 »

В скрипте конвертации есть sql переноса ip:

Код:
INSERT INTO ip_pool SELECT NULL, INET_ATON(ip), 'static', 0, 0, id FROM users;

Маки переносятся чуть сложнее. Нужно искать sql, я делал нескольким людям

Нашел, вроде этот:

Код:
INSERT INTO mac_uid (uid, mac, ip, time, device_mac, device_port, oneconnect, comment)
    (SELECT parent_id, REPLACE(REPLACE(field_value, ':', ''), '-', ''), 0, 0, '', 0, 0, ''
     FROM dopdata WHERE field_alias='_mac' AND field_value <>'')
    ON DUPLICATE KEY UPDATE uid=parent_id;
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #197 : 08 Ноября 2018, 03:11:41 »

В скрипте конвертации есть sql переноса ip:

Код:
INSERT INTO ip_pool SELECT NULL, INET_ATON(ip), 'static', 0, 0, id FROM users;

Маки переносятся чуть сложнее. Нужно искать sql, я делал нескольким людям

Нашел, вроде этот:

Код:
INSERT INTO mac_uid (uid, mac, ip, time, device_mac, device_port, oneconnect, comment)
    (SELECT parent_id, REPLACE(REPLACE(field_value, ':', ''), '-', ''), 0, 0, '', 0, 0, ''
     FROM dopdata WHERE field_alias='_mac' AND field_value <>'')
    ON DUPLICATE KEY UPDATE uid=parent_id;

Моему счастью нет предела)))  Смеющийся
Все перенеслось, спасибо огромное)

Но перестал рабоать make_konfig, даже с пустым темплейтом пишет ошибку, по макам проверил пустых нету:

Код:
SELECT * FROM mac_uid ORDER BY mac
Строк: 10. Время выполнения sql: 0.0247 сек

Can't use string ("") as a HASH ref while "strict refs" in use at /usr/local/nodeny/kernel/make_config.pm line 131.
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #198 : 10 Ноября 2018, 00:38:23 »

Не могу побороть ошибку..
131 строка как раз таки на запросах маков
Код:
if( $config->{db_table}{mac_uid} )
    {
        my $db = Db->sql("SELECT * FROM mac_uid ORDER BY mac");
        $db->ok or return;
        my $indexes = {};
        while( my %p = $db->line )
        {
            my $uid = $p{uid};
            exists $users{$uid} or next;
            my $i = $indexes->{$uid}++ || '0';
            $users{$uid}->{connection}{$i} = \%p;
           [b] $users{$uid}->{mac}{$i++} = $p{mac};[/b]
        }
    }

Can't use string ("") as a HASH ref while "strict refs" in use at /usr/local/nodeny/kernel/make_config.pm line 131.

Правильно я понимаю, что ошибка, про то, что есть пустая строка в столбце с МАКами?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #199 : 10 Ноября 2018, 08:52:53 »

Нет. Возможно это связано с версией perl. Выполни в консоли bash-а:
Код:
perl -e'use strict; my $a={}; $a->{a}{a} = 5'
ошибку выдает?

И покажи версию perl:

Код:
perl -v | head -2
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #200 : 10 Ноября 2018, 09:02:05 »

Нет. Возможно это связано с версией perl. Выполни в консоли bash-а:
Код:
perl -e'use strict; my $a={}; $a->{a}{a} = 5'
ошибку выдает?

И покажи версию perl:

Код:
perl -v | head -2

Ошибок  нету.

Код:
# perl -e'use strict; my $a={}; $a->{a}{a} = 5'
# perl -v | head -2

This is perl 5, version 26, subversion 2 (v5.26.2) built for amd64-freebsd-thread-multi
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #201 : 10 Ноября 2018, 11:05:08 »

а у тебя поля mac в таблице users случайно нет?
Код:
show create table users;
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #202 : 10 Ноября 2018, 18:59:37 »

а у тебя поля mac в таблице users случайно нет?
Код:
show create table users;

Упс... есть все-таки. Это еще с 45ой версии осталось когда сам дхцп модуль делал  Смеющийся

Код:
| users | CREATE TABLE `users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(64) NOT NULL DEFAULT '',
  `passwd` tinytext CHARACTER SET cp1251 NOT NULL,
  `grp` tinyint(4) unsigned NOT NULL DEFAULT '0',
  `contract` tinytext NOT NULL,
  `contract_date` int(10) unsigned NOT NULL DEFAULT '0',
  `state` enum('off','on') NOT NULL DEFAULT 'on',
  `balance` float(10,2) NOT NULL DEFAULT '0.00',
  `limit_balance` float(6,2) NOT NULL DEFAULT '0.00',
  `block_if_limit` tinyint(4) NOT NULL DEFAULT '0',
  `mac` tinytext CHARACTER SET cp1250 NOT NULL,
  `modify_time` int(11) NOT NULL DEFAULT '0',
  `fio` tinytext NOT NULL,
  `discount` tinyint(4) NOT NULL DEFAULT '0',
  `real_ip` tinytext CHARACTER SET cp1251 NOT NULL,
  `cstate` int(11) NOT NULL DEFAULT '0',
  `cstate_time` int(10) unsigned NOT NULL DEFAULT '0',
  `comment` varchar(8192) NOT NULL DEFAULT '',
  `lstate` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`),
  KEY `state` (`state`)
) ENGINE=InnoDB AUTO_INCREMENT=3448 DEFAULT CHARSET=utf8 COMMENT='rev_0' |

Итого, сделал
Код:
ALTER TABLE users DROP mac;

make_config заработал.
Спасибо Улыбающийся Не так просто мигрировать, как казалось.
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #203 : 10 Ноября 2018, 19:48:59 »

Если в базу вносились изменения, конечно модуль миграции о них не знает, поэтому и трудно мигрировать. Если все стандартно, то проблем не должно быть. Удали еще real_ip
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #204 : 12 Ноября 2018, 22:05:58 »

понял, спасибо! ))

Если поставить модуль дхцп и раздавать МАК+IP, абонентов, которые в работе, можно видеть в админке?

И только сейчас, я понял, что это делает модуль дхцп))) через скрипт events.pl, он авторизует клиентов, и не нужно больше режим ВСЕГДА ОНЛАЙН, как это было в 50.32  Смеющийся
Записан
Cell
NoDeny
Спец
*

Карма: 52
Offline Offline

Сообщений: 1407



Просмотр профиля
« Ответ #205 : 13 Ноября 2018, 08:47:13 »

Это если у тебя все на одном тазике крутится. Хотя у меня юзеры и так умудрялись заглушку увидеть. А если саттелиты выносные - то команда включения проходит не мгновенно и чудовище наблюдает заглушку а еще хуже пустой экран какое-то время. А учитывая поведение некоторых браузеров, свой любимый порносайт он может увидеть только когда кэш сбросит. А так-то да, все клево.
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #206 : 14 Ноября 2018, 15:04:31 »

А почему с документации убрали ман по настройке НАСа на фрибсд?
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4782



Просмотр профиля
« Ответ #207 : 14 Ноября 2018, 15:35:23 »

А почему с документации убрали ман по настройке НАСа на фрибсд?
Еще не перенесли в новую документацию, в старой есть: http://app.nodeny-plus.com.ua/docs/faq.html#sats
Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #208 : 19 Ноября 2018, 00:22:07 »

Вероятно у тебя в таблице с картами, у какой-то карты id оператора некорректный (видимо отрицательный).  Либо, возможно, отрицательный id оператора  устанавливается когда карточки в состоянии перемещения (уже не помню, дохера лет прошло с той старой версии). Попробуй так:

Код:
UPDATE cards SET r=ABS(r);
Отпиши в форум результат выполнения - если что я в скрипт перехода добавлю.

Код:
ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';

 Если этот запрос выдаст ошибку, то:

Код:
ALTER TABLE cards CHANGE r adm_owner INT(11) NOT NULL DEFAULT '0';

И в конце в любом случае:

Код:
ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
ALTER TABLE cards ADD INDEX (adm_move);




вот результат

Код:
mysql> UPDATE cards SET r=ABS(r);
Query OK, 7 rows affected (0.45 sec)
Rows matched: 135951  Changed: 7  Warnings: 0

mysql> ALTER TABLE cards CHANGE r adm_owner MEDIUMINT(9) UNSIGNED NOT NULL DEFAULT '0';
Query OK, 135951 rows affected (0.62 sec)
Records: 135951  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE cards ADD adm_move MEDIUMINT UNSIGNED NOT NULL DEFAULT '0' AFTER adm_owner;
Query OK, 135951 rows affected (0.63 sec)
Records: 135951  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE cards ADD INDEX (adm_move);
Query OK, 135951 rows affected (0.83 sec)
Records: 135951  Duplicates: 0  Warnings: 0

Записан
NodenY45
NoDeny
Старожил
*

Карма: 2
Offline Offline

Сообщений: 365


Просмотр профиля
« Ответ #209 : 19 Ноября 2018, 01:43:01 »

Вот пробую перенести БД рабочую, затирает все пользовательские пароли, админские остаются.

из файла миграции, почему разные типы? varbinary и VARCHAR ?
Код:
ALTER TABLE `admin` MODIFY COLUMN passwd varbinary(64) NOT NULL;
 ALTER TABLE `users` MODIFY COLUMN passwd VARCHAR(64) NOT NULL;

пытаюсь разобраться что их затирает в NULL...
Записан
Страниц: 1 ... 12 13 [14] 15 16
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.20 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!