Can't create table

Started by MikaS, 08.07.14 - klo:16:38

Previous topic - Next topic

MikaS

Hei,

Siirsin laskutusohjelmaa toiselle palvelimelle, otin asianmukaiset varmuuskopiot, asensin paketin uudelle palvelimelle. Kaikki meni hyvin siihen asti kunnes yritin palauttaa varmuuskopiota phpMyadminin avulla. Törmään aina samaan virheilmoitukseen

#1005 - Can't create table 'xxxxx_mlinvoice.mlinvoice_company' (errno: 150)

Onko muilla ollut samoja ongelmia?

Ere Maijala

Tuo virhe johtuu yleensä siitä, että yritetään luoda taulua, joka viittaa toiseen tauluun jota ei ole vielä olemassa. Otitko varmuuskopion MLInvoicella vai esim. PHPMyAdminilla? MLInvoicen varmuuskopiointitoiminnon pitäisi tehdä SQL-skripti oikeassa järjestyksessä, mutta voi siinäkin bugi olla. Jos koitat ajaa skriptin useampaan kertaan, pitäisi sen loppujen lopuksi mennä läpi. Tai jos koitat ajaa ensin skriptistä ne rivit, jotka koskevat mlinvoice_company-taulun vaatimia tauluja (mlinvoice_company_type, mlinvoice_delivery_terms, mlinvoice_delivery_method), niin onnistuuko sitten?

--Ere

MikaS

Varmuuskopio on otettu MLInvoicella. Kokeilen vielä ajaa skriptin usempaan kertaan ja sitten tuota toista keinoa. Palaan asiaan jos ei onnistu, kiitos neuvoista.

ranetuo

PhpMyAdminissä on dumpille aikarajoitus, muistaakseni 360 sekuntia. Joudut ehkä muokkaamaan php.iniä. Parhaan dumpin saat suoraan komentoriviltä, tällöin ei ole aika- eikä kokorajoituksia.

MikaS

Yritin molempia mainittuja keinoja, skriptin moneen kertaan ajamista ja mlinvoice_company-taulujen skriptin ensin ajamista. Sama ongelma jatkuu edelleen. Kyseesä on siis MLInvoicella otettu varmuuskopio jota yritän palautaa PHPMyAdminilla.

Voiko MLInvoicen versio vaikuttaa? Muistaakseni varmuukopio on otettu aikemmalla versiolla ja nyt on käytössä tämä uusin, 1.9.0.

Tässä cPanelista napatut muuta versiotiedot, jos näillä on merkitystä

    Palvelin: Localhost via UNIX socket
    Palvelintyyppi: MySQL
    Palvelimen versio: 5.5.37-cll - MySQL Community Server (GPL)
    Protokollan versio: 10
    Käyttäjä: xxxx@localhost
    Palvelimen merkistö: UTF-8 Unicode (utf8)

Verkkopalvelin
    cpsrvd 11.44.1.7
    Tietokannan asiakasohjelman versio: libmysql - 5.1.73
    PHP-laajennus: mysqli Ohjeet

phpMyAdmin
Versiotiedot: 4.1.8

Ere Maijala

Bugihan se MLInvoicessa oli. Pahoitteluni hämmingistä. Backup-tiedostosta pitäisi palauttaa ensin kaksi viimeistä taulua, eli mlinvoice_delivery_terms ja mlinvoice_delivery_method, jotta mlinvoice_company-taulun palautus onnistuisi. Vika on nyt korjattu GitHubin masterissa. Voisitko kokeilla master-versiolla, tai korvata 1.9:stä sqlfuncs.php-tiedoston tällä uusimmalla versiolla: https://raw.githubusercontent.com/emaijala/MLInvoice/441db7de0d6cc78876bc457c958f6798f55f7a32/sqlfuncs.php

--Ere

MikaS

Jeps, nyt toimii. Palautin ensin nuo kaksi viimeistä taulua ja sitten loput, Kiitos neuvoista.

jammyjii

#7
Moi,

mulla herjasi 1.8.0 -> 1.9.0 -päivityksen yhteydessä, että tietokannan päivittäminen ei onnistu. Tarkempi tarkastelu osoitti virheeksi 'BLOB/TEXT column 'company_name' used in key specification without a key length' joka taas viittasi siihen, että mlinvoice_companyn 'company_name' -kenttä oli määritetty TEXT:ksi eikä sitä voitu sen vuoksi "hiplata". Muutin sen phpmyadminissa VARCHAR(100) niin johan päivitys onnistui. En tiedä mistä versiosta lähtien tuo on ollut TEXT ja miksi se vasta nyt alkoi herjaamaan.

Muokkaus: Itseasiassa olen saattanut ihan itse muuttaa vuosia sitten tuon kentän TEXT-muotoon jonkun tarpeen mukaan... eli todennäköisesti samaa ongelmaa ei ole kenelläkään muulla :)

Ere Maijala

MLInvoicessa company_name ei ole ollut TEXT-tyyppinen, joten paikallisesta muokkauksesta lienee kyse. Tarvittaessa tuota pituutta voi kyllä jonkin verran nostaa myös ilman kentän tyypin muuttamista.

--Ere