Посредством лома и какой-то матери перенес данные из таблиц версии 1.х в таблицы версии 2.х. После удаления созданной по шаблону accountinfo_config, нормально отработала конверсия старых данных accountinfo в новый формат (вот и пригодится рассмотренный чуть ранее view).
Пошел проверять настройки подсетей, вроде всё выглядит гладко:

Однако... Однако при проверке вылезло:

вот те раз! А где ж ID 120000, который прекрасно виден в предыдущей таблице? А нету!
Смотрим таблицу subnet:
В ней есть. Так в чем же дело? Дело в том, что теперь поле id вставляется, уж не знаю, с какого перепуга, из таблицы config, и если в ней такого id-а нет, то и в настройках подсети он не появится - выбрать можно только из тех, что прописаны в конфиге.
Да и фиг с вами! Давайте импортировать?
Вбил пару id-ов вручную, чтобы узнать формат.
Всё ясно. Опять поля нумеруются последовательно. Будем писать хитровыделанный скрипт, который добавит существующие id-ы из subnet в config.
Весь процесс подготовки расписывать не буду, вот конечный результат:
Пошел проверять настройки подсетей, вроде всё выглядит гладко:
Однако... Однако при проверке вылезло:
вот те раз! А где ж ID 120000, который прекрасно виден в предыдущей таблице? А нету!
Смотрим таблицу subnet:
select netid,name,id from subnet; +----------------+---------------------------------------------------+--------+ | netid | name | id | +----------------+---------------------------------------------------+--------+ | 172.21.120.0 | Управление: dynDHCP (256)-1 | 120000 |
В ней есть. Так в чем же дело? Дело в том, что теперь поле id вставляется, уж не знаю, с какого перепуга, из таблицы config, и если в ней такого id-а нет, то и в настройках подсети он не появится - выбрать можно только из тех, что прописаны в конфиге.
Да и фиг с вами! Давайте импортировать?
Вбил пару id-ов вручную, чтобы узнать формат.
select * from config where name rlike 'id_ipdiscover'; +-----------------+--------+--------+----------+ | NAME | IVALUE | TVALUE | COMMENTS | +-----------------+--------+--------+----------+ | ID_IPDISCOVER_1 | 1 | 101 | NULL | | ID_IPDISCOVER_2 | 2 | 107 | NULL | +-----------------+--------+--------+----------+
Всё ясно. Опять поля нумеруются последовательно. Будем писать хитровыделанный скрипт, который добавит существующие id-ы из subnet в config.
Весь процесс подготовки расписывать не буду, вот конечный результат:
-- счетчик: начинаем отсчет с последнего известного ИД-а -- по умолчанию считаем, что хотя бы один мы уже занесли set @currid:=(select max(config.ivalue) from ocsweb.config where config.name rlike 'id_ipdiscover');
-- выбираем псевдостолбцы из псевдотаблицы
insert into config select confnewNAME,confnewid,NetID,'' from
(
SELECT
id as NetID,
-- чтобы не делать кучу селектов для следуюших проверок, запоминаем в переменной
@ival:=(select
ivalue
from
config
where
config.name rlike 'id_ipdiscover'
and config.tvalue = id) as 'confID',
-- если ИДа для такой сети нет, то увеличиваем счетчик
(ifnull(@ival, @currid:=@currid + 1)) as confNewID,
-- снова: если ИДа нет, то формируем новое значение параметра
-- счетчик уже увеличен на предыдущем шаге
(if(not isnull(@ival),
NULL,
(concat('ID_IPDISCOVER_', @currid)))) as confNewNAME
FROM
ocsweb.subnet) as lookforer
-- выбираем только те, которых еще нет в конфиге
where not isnull(confnewNAME);




Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.