RSS Feed

Posts Tagged ‘aktualizacja’

  1. LMS, aktualizacja z 1.10.x do 1.11.x

    Marzec 21, 2011 by 0verlord

    Trafiła mnie ostatnio przyziemność zaktualizowania LMSa z 1.10.4, do najnowszej. Stara wersja nie chciała działać z najnowszym Debianem (Squeeze). Ciekawe, że stary LMS na nowym Debianie pokazywał menu bez logowania i pozwalał na przeróżne manipulacje na systemie.

    Problemów jest na pewno kilka, dwa najgrubsze to brak aktualizacji kilku rzeczy w bazie.

    nr 1. bug przy próbie zalogowania się,

    Zapytanie: ALTER TABLE cashimport ALTER customerid DROP NOT NULL
    Błąd: 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 'NOT NULL' at line 1
    Zapytanie: ALTER TABLE cashimport ALTER customerid SET DEFAULT NULL
    Błąd: Invalid default value for 'customerid'
    Zapytanie: ALTER TABLE cashimport ADD FOREIGN KEY (customerid) REFERENCES customers (id) ON DELETE SET NULL ON UPDATE CASCADE
    Błąd: Can't create table 'lms_atm.#sql-24e7_a6b' (errno: 150)

    naprawiamy tak:
    > ALTER TABLE cashimport MODIFY customerid integer default null;

    Bug nr dwa, jak się okazuje po upgrade, komputery klientów nie są przypisane do zobowiązania, bo się baza mocno zmieniła pomiędzy 1.10 i 1.11. Generalnie można to oczywiście przeklikać ręcznie jak by ktoś był pracowity, ale ja tam osobiście wolę automatykę.

    > insert into nodeassignments ( nodeid, assignmentid ) select nodes.id as blabla, assignments.id as assignmentid from nodes left join assignments on assignments.customerid = nodes.ownerid;

    I potem już wszystkie komputery są automagicznie przypisane do odpowiedniego zobowiązania (liability).

    Ciekawe, że trafiłem ten błąd przypadkiem, bo nie chciał mi działać moduł tc-ng w lmsd. TC dla odmiany działa ok, i generuje poprawne regułki.

    Jaka jest różnica pomiędzy tc-ng i tc? TC dla każdego kompa generuje pełny pakiet, czyli podłączamy 3 kompy do taryfy 1mbit i każdy jeden komp dostaje 1mbit. TC-NG generuje klasy per klient, czyli nie ważne ile komputerów podłączymy, klient nie przeskoczy 1mbit.

    Generalnie po wykonaniu altera i selectoinserta wszystko działa. O ile oczywiście ktoś nie wyprodukował skryptów, które generują np. regułki do firewalla na podstawie starego schematu bazy.