Päivitys 1.1 -> 1.6:een ja varmuuskopion palautusongelma

Started by ark28, 29.12.12 - klo:19:38

Previous topic - Next topic

ark28

Moi,

Pitkästä aikaa taasen laskustusohjelman parissa. Elikkä meillä on ollut käytössä VLLasku 1.1 ja hyvin pelittänyt!. :)
Nyt ajattelin kuitenkin, että voisi olla aika siirtyä uudempaan versioon....
Otin backupin 1.1:stä ja tein uuden tietokannan MLInvoice 1.6.1:stä varten.
Ko. kantaan palautin ensin 1.1 backupin ja sen jälkeen ajoin update scriptit:
- update_database1.1_to_1.2.sql
- update_database1.2_to_1.3.sql
- update_database1.3_to_1.4.sql
- update_database1.4_to_1.5.sql

Huomasin, että viimeisen scriptin ajamisen jälkeen tuotteen hinnat muuttuivat ts. yli 10 000:n euron hinnat pyöristyivät 10 000:een (taikka oikeastaan 9999.9999).

Tässä olikin jo raporttia aiemmin, joten tein samat muutokset update_database1.4_to_1.5.sql scriptiin:


ALTER TABLE vllasku_product CHANGE COLUMN unit_price unit_price decimal(15,5);
ALTER TABLE vllasku_invoice_row CHANGE COLUMN price price decimal(15,5);

Näillä muutoksilla pikaisen testin perusteella näytti toimivan.

Mites muuten backupin palautus onnistuu, jos tiedoston koko menee yli 2 Mt:n? PhpMyadmin:issa enimmäiskoko: 2 048kt...
Nyt backupin koko oli 1.9 Mt...

t. Ari

Ere Maijala

Moi,

MLInvoicen olisi pitänyt tehdä automaattisesti nuo päivitykset (ja tukku muita) kun menee login-ruudulle. Toki täytyy nyt myöntää, etten ole muistanut päivitysskriptiä korjata. Lisään korjauksen seuraavaan versioon.

Varmuuskopio on oikeastaan vain lista SQL-lauseita, jotka voidaan ajaa myös palasissa. Tiedoston voi siis esim. avata johonkin tekstieditoriin ja kopioida sieltä palasen kerrallaan PhpMyAdminin puolelle. Toinen vaihtoehto on ajaa varmuuskopio skriptinä mysql-ohjelmassa, jos on pääsy palvelimen komentoriville, tähän tyyliin:

mysql <tietokannan_nimi> -u<käyttäjätunnus> -p < varmuuskopiotiedosto.sql

Onnistuu myös mysql-ohjelmassa source-komennolla.

t. Ere

ark28

Moi,

Kiitos taas nopeasta vastauksesta!
Pitäisikö päivityksen onnistua suoraan 1.1:stä 1.6:een ilman että ajan mitään update scriptejä?
Kokeilin niin, että loin uuden kannan ja palautin siihen 1.1 backupin.
Sitten 1.6.1 login, jolloin tuloksena herjaa jostain sessioon liittyvästä querystä (en ottanut virhettä talteen, mutta voin testailla uudelleen, jos tarpeen)
Ajoin sitten 1.1 -> 1.2 päivitysscriptin ja uusi yritys: Tuloksena viesti että tietokannan päivitys epäonnistui...
Nyt sitten 1.2 -> 1.3 päivitysscriptiä perään, jonka jälkeen login ja päivitys onnistui OK.

t. Ari

Ere Maijala

Ei onnistu ilman päivitysskriptien ajamista. Ne skriptit pitää ajaa, että pääsee versioon 1.5, josta MLInvoice osaa päivittää itsensä eteenpäin. Syynä tähän on se, ettei tietokannassa ollut aiemmin mitään versionumeroa tms., josta olisi helppo päätellä, mitä päivityksiä täytyy tehdä. Toki olisi ollut mahdollista tsekata ne yksitellen, mutta tekijä on laiska. :)

--Ere

jykarkka

Voisikos tuossa olla testi, että jos kannassa ei ole versionumeroa, tai se on tyhjä, niin tulostetaan käyttäjälle ohje suorittaa tietokannan päivitysskriptit käsin?

Ere Maijala

Toki voisi, tai olisi voinut olla, jos sellainen olisi pitänyt käsin ajettavalla skriptillä lisätä, mutta kun automaattipäivitys tuli kuvioihin, oli liian myöhäistä, sillä ensimmäisenä se lisää tuon versiotiedon eli tavallaan sen pitikin puuttua. Toki muitakin tarkistuksia voisi tehdä, mutta viittaan edelliseen viestiin.

--Ere