Päivitys 1.2.1 -> 1.6.1 epäonnistui osittain

Started by LanttiS, 08.01.13 - klo:00:45

Previous topic - Next topic

LanttiS

Iltaa,

Osaatteko neuvoa kädetöntä: Päivitin mielestäni ohjeen mukaan 1.2.1 versiosta versioon 1.6.1. Eli yksinkertaisesti korvasin vanhat tiedostot uusilla ja ajoin skriptit (kolme ajoa) tietokantaan. Yritin tihrustaa, olisko noissa ajoissa tullut virheitä, mutta kun ei osaaminen riitä tulosten analysointiin. Sitten kopioin talteen ottamani config.php:n takaisin hakemistoon. Kirjautuessa tuli herja, että tietokantavirhe.

Nyt etusivulla ei näy listaa auki olevista laskuista. Asiakkaat ja aiemmin laskutetut tiedot löytyvät kyllä "laskutus-> kaikki laskut" -kautta. Avoimet laskut-nappikin antaa tietokantavirheen.

Logista löysin nämä:
[07-Jan-2013 23:54:20 Europe/Helsinki] Query 'CREATE TABLE vllasku_state (
  id char(32) NOT NULL,
  data varchar(100) NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;' failed: (1142) CREATE command denied to user 'tunnus_laskut'@'localhost' for table 'vllasku_state'
[07-Jan-2013 23:56:25 Europe/Helsinki] Query 'CREATE TABLE vllasku_state (
  id char(32) NOT NULL,
  data varchar(100) NULL,
  PRIMARY KEY (id)
) ENGINE=INNODB CHARACTER SET utf8 COLLATE utf8_swedish_ci;' failed: (1142) CREATE command denied to user 'tunnus_laskut'@'localhost' for table 'vllasku_state'
[07-Jan-2013 23:56:26 Europe/Helsinki] Query 'SELECT i.id,i.deleted,i.invoice_date,i.due_date,i.invoice_no,b.name,c.company_name,i.name,s.name,i.ref_number,SUM(it.row_total) as total_price FROM vllasku_invoice i LEFT OUTER JOIN vllasku_base b on i.base_id=b.id LEFT OUTER JOIN vllasku_company c on i.company_id=c.id LEFT OUTER JOIN vllasku_invoice_state s on i.state_id=s.id LEFT OUTER JOIN (select ir.invoice_id, CASE WHEN ir.vat_included = 0 THEN ir.price * ir.pcs * (1 - IFNULL(ir.discount, 0) / 100) * (1 + ir.vat / 100) ELSE ir.price * ir.pcs * (1 - IFNULL(ir.discount, 0) / 100) END as row_total from vllasku_invoice_row ir where ir.deleted = 0) it ON (it.invoice_id=i.id) WHERE i.id IN (SELECT id FROM vllasku_invoice WHERE interval_type>0 AND next_interval_date<=20130107 AND archived=0 AND deleted=0 )  GROUP BY i.id, i.deleted, i.invoice_date, i.due_date, i.invoice_no, b.name, c.company_name, i.name, s.name, i.ref_number' failed: (1054) Unknown column 'interval_type' in 'where clause'
[08-Jan-2013 00:17:03 Europe/Helsinki] Query 'SELECT i.id,i.deleted,i.invoice_date,i.due_date,i.invoice_no,b.name,c.company_name,i.name,s.name,i.ref_number,SUM(it.row_total) as total_price FROM vllasku_invoice i LEFT OUTER JOIN vllasku_base b on i.base_id=b.id LEFT OUTER JOIN vllasku_company c on i.company_id=c.id LEFT OUTER JOIN vllasku_invoice_state s on i.state_id=s.id LEFT OUTER JOIN (select ir.invoice_id, CASE WHEN ir.vat_included = 0 THEN ir.price * ir.pcs * (1 - IFNULL(ir.discount, 0) / 100) * (1 + ir.vat / 100) ELSE ir.price * ir.pcs * (1 - IFNULL(ir.discount, 0) / 100) END as row_total from vllasku_invoice_row ir where ir.deleted = 0) it ON (it.invoice_id=i.id) WHERE i.id IN (SELECT id FROM vllasku_invoice WHERE interval_type>0 AND next_interval_date<=20130108 AND archived=0 AND deleted=0 )  GROUP BY i.id, i.deleted, i.invoice_date, i.due_date, i.invoice_no, b.name, c.company_name, i.name, s.name, i.ref_number' failed: (1054) Unknown column 'interval_type' in 'where clause'

Mitä pitäisi tehdä asian korjaamiseksi?

Kiitos vastauksista jo etukäteen!

-lantti

Ere Maijala

Tervehdys,

MySQL-käyttäjällä ei ole riittäviä oikeuksia tietokannan muokkaukseen. Helpointa myös tulevaisuuden kannalta on antaa sille kaikki oikeudet tietokantaan. Sen jälkeen takaisin kirjautumisruudulle, niin tietokannan päivitystä yritetään uudelleen. Toinen vaihtoehto, jos ei halua sallia kaikkia komentoja tietokannassa, on tehdä kaikki nuo epäonnistuneet komennot käsin, mutta siinä on vähän hommaa.

t. Ere

LanttiS

#2
KIITOS!

Sairaan hieno juttu, että oli noin yksinkertainen ratkaisu ongelmaan. Nyt ainakin näytti sille, että homma toimii. Palaan tälle foorumille, jos jotain epäselvää tulee vastaan.

Kysymys2: Saako MLInvoicesta valittua lähetävää sähköpostipalvelinta? Webhotellimme tuntuu olevan blacklistalla (viestit eivät mene esim gmailiin, hotmailiin, msn:än) tai jolain muulla estolistalla vähän väliä. Olisi kiva, jos viestit saisi lähtemään joltain muulta palvelimelta kuin omalta, jotta viestit menevät oikeasti perille asti.

Kiitos vielä nopeasta vastauksesta!

-Lantti

Ere Maijala

MLInvoice käyttää PHP:n mail-komentoa, eli sitä ohjaavilla asetuksilla voi vaikuttaa toimintaan. Jos ei ole pääsyä PHP:n ini-tiedostoon, niin asetukset voi laittaa MLInvoicen config.php:hen (vaikka loppuun, ei niin väliä). Esim näillä voisi olla vaikutusta, vaikka en olekaan itse kokeillut:

ini_set("SMTP","smtp.example.com" );
ini_set('sendmail_from', 'user@example.com');

Ongelmaksi tosin taitaa muodostua se, että autentikointia tuohon ei saa. Toisin sanoen voi olla, että joutuisit tekemään invoice_printer_email.php:sta oman version, joka käyttää mail-komennon sijaan jotain SMTP-kirjastoa (esim. http://pear.php.net/package/Net_SMTP/) viestin lähettämiseen. Tai sitten palveluntarjoajalle valitusta tai vaihtoon...

--Ere