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

Войти
Новости: Прекращена поддержка версии Nodeny 49
 
   Начало   Помощь Поиск Войти Регистрация  
Страниц: 1 ... 6 7 [8] 9 10 ... 16
  Печать  
Автор Тема: Миграция с 50.32  (Прочитано 83193 раз)
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #105 : 06 Марта 2014, 22:24:53 »

Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #106 : 07 Марта 2014, 08:05:33 »

Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
спасибо, но не помогло(
Записан
vddav
Старожил
****

Карма: 3
Offline Offline

Сообщений: 251


Просмотр профиля Email
« Ответ #107 : 07 Марта 2014, 12:21:55 »

я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();
Записан
Efendy
Администратор
Спец
*****

Карма: 138
Offline Offline

Сообщений: 4790



Просмотр профиля
« Ответ #108 : 07 Марта 2014, 12:32:13 »

Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
спасибо, но не помогло(
алиас у поля с маками _mac?
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #109 : 07 Марта 2014, 12:38:35 »

я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();
Буду пробовать! У меня это не рабочий а тестовый.
Значит создаю базу test, выбираю туда бэкап 50,32, пароли и настройки в скрипте меняю под свои. И по скрипту в базу nodeny (основную) перенесутся mac-адреса в соответсвии с ID абонентов.
Правильно понял?
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #110 : 07 Марта 2014, 12:43:46 »

Код:
INSERT INTO mac_uid (uid,mac)     
   (SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac')
спасибо, но не помогло(
алиас у поля с маками _mac?
Да. скрин с phpmyadmin
prntscr.com/2ymx9f
Записан
vddav
Старожил
****

Карма: 3
Offline Offline

Сообщений: 251


Просмотр профиля Email
« Ответ #111 : 07 Марта 2014, 12:57:12 »

я переносил таким вот перловым скриптом))) коряво конечно, но перенесло, до сих пор все работает) но лучше проверь где нить в песочнице. была доп БД 'test' в ней база старого нодени. работает через цикл - поочередно перебирает все id юзеров, по єтому в цикле ставишь кол-во абонов + 1))) и dopfield_id смотри какое у тебя по номеру.
Код:
#!/usr/bin/perl

use DBI;

my $dsn = 'DBI:mysql:nodeny:localhost';
my $db_user_name = 'root';
my $db_password = 'рутовій пас';
my ($uid, $mac, $mac_ok, $x);
my $dbh = DBI->connect($dsn, $db_user_name, $db_password);

$x=0;
$dbh->do("TRUNCATE TABLE nodeny.mac_uid");

while($x<количество абонов) {

my $sth = $dbh->prepare(qq{
SELECT parent_id, field_value from test.dopvalues
        WHERE  parent_id=$x AND dopfield_id=4 AND revision=(
                SELECT MAX(revision)
                FROM test.dopvalues
                WHERE parent_id=$x AND dopfield_id=4);
});
$sth->execute();
($uid, $mac) = $sth->fetchrow_array();
$sth->finish();
$mac_ok = join '', split /:/, lc $mac;

$dbh->do("INSERT INTO nodeny.mac_uid (uid, mac) values ('$uid', '$mac_ok')");
print "$x, $mac, $mac_ok\n";
$x++;
}
$dbh->disconnect();
Буду пробовать! У меня это не рабочий а тестовый.
Значит создаю базу test, выбираю туда бэкап 50,32, пароли и настройки в скрипте меняю под свои. И по скрипту в базу nodeny (основную) перенесутся mac-адреса в соответсвии с ID абонентов.
Правильно понял?
ну вроде все так))) собственно почему перловім скриптом - в 50н маки хранились с двоеточиями, а в Н+ без разделителей, собственно и пришлось такое "чудо" придумать))))
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #112 : 07 Марта 2014, 13:27:27 »

Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac'
хоть что-то выдаст?
если нет, то это:
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'
если да, то заменить в инсерте первый селект на второй
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #113 : 07 Марта 2014, 13:54:33 »

Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopdata dd inner join rev_users r on r.rev=dd.revision and dd.template_num=r.template_num WHERE dd.field_alias='_mac'
хоть что-то выдаст?
если нет, то это:
Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'
если да, то заменить в инсерте первый селект на второй
#mysql -p
mysql>use nodeny;
mysql>SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac'

После етого должно было что то выдать, если я правильно понял?
но ничего не выдает ни так ни так(
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #114 : 07 Марта 2014, 14:04:32 »

а Вы уверены, что в базе хоть что-то есть? Например:
Код:
SELECT * FROM dopvalues LIMIT 10
Код:
SELECT * FROM dopdata LIMIT 10
даст какой-то результат?
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #115 : 07 Марта 2014, 14:24:14 »

mysql> SELECT *  FROM  `dopvalues`  WHERE  `dopfield_id` =4 LIMIT 0 , 30;
+-----------+-------------+-------------------+
| parent_id | dopfield_id | field_value       |
+-----------+-------------+-------------------+
|         1 |           4 | 001D6074A102      |
|         1 |           4 |                   |
|         1 |           4 | 001D6074A102      |
|         1 |           4 | 001D6074A103      |
|         1 |           4 | 00:1D:60:74:A1:02 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:04:00:00 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:74:A1:02 |
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #116 : 07 Марта 2014, 14:26:42 »

mysql> SELECT *  FROM  `dopvalues`  WHERE  `dopfield_id` =4 LIMIT 0 , 30;
+-----------+-------------+-------------------+
| parent_id | dopfield_id | field_value       |
+-----------+-------------+-------------------+
|         1 |           4 | 001D6074A102      |
|         1 |           4 |                   |
|         1 |           4 | 001D6074A102      |
|         1 |           4 | 001D6074A103      |
|         1 |           4 | 00:1D:60:74:A1:02 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:04:00:00 |
|         1 |           4 | 00:1D:60:74:00:00 |
|         1 |           4 | 00:1D:60:74:A1:02 |


Я дико извиняюсь, не ставил вконце ";"
все команды что Вы указывали выводят таблицу маков
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #117 : 07 Марта 2014, 14:31:21 »

Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
в их числе?
должно либо вывести результат, либо сообщить про ошибку, но если ни результата, ни ошибки, тогда нужно смотреть в:
Код:
select * from rev_users limit 10;
должно быть что-то
Код:
select * from dopfields;
должно показать доп.поля
Записан
Pa4ka
Старожил
****

Карма: 4
Offline Offline

Сообщений: 281

591884591
Просмотр профиля Email
« Ответ #118 : 07 Марта 2014, 14:34:58 »

Код:
SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
в их числе?
должно либо вывести результат, либо сообщить про ошибку, но если ни результата, ни ошибки, тогда нужно смотреть в:
Код:
select * from rev_users limit 10;
должно быть что-то
Код:
select * from dopfields;
должно показать доп.поля


Да, в их числе.
Выводиться таблица ID mac
Записан
0xbad0c0d3
гуру nodeny )
NoDeny
Спец
*

Карма: 116
Offline Offline

Сообщений: 1059



Просмотр профиля
« Ответ #119 : 07 Марта 2014, 14:39:56 »

Тогда, предположу, что:
Код:
INSERT INTO mac_uid (uid,mac)  SELECT dd.parent_id, REPLACE(dd.field_value,':','') FROM dopvalues dd inner join dopfields df inner join rev_users r on r.rev=dd.revision and df.template_num=r.template_num and df.id=dd.dopfield_id WHERE df.field_alias='_mac';
выполнится отлично Подмигивающий
Записан
Страниц: 1 ... 6 7 [8] 9 10 ... 16
  Печать  
 
Перейти в:  

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