Kirjoittaja Aihe: PostgreSQL kääntäminen ja tietokannan palautus  (Luettu 5901 kertaa)

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Moi

Tuli vastaan heti kättelyssä Postgren rajoitus, jossa taulun nimi ei voi olla yli 63 merkkiä.
Ratkaisu on ladata lähdekoodit ja muokata NAMEDATALEN  muuttujan arvoksi -1 (oletan rajoittamaton) ja kääntää uusiksi.

Nyt ihmettelen, että mitä vipuja tuohon tarvii ja miten saan asennettua sen nykyisen sovelluksen päälle.
Ilmeisesti jostain pitäis ottaa varmuuskopio, että saa nykyisen kannan talteen.

Tutoriaaleja ei tällaiseen tapaukseen löytynyt.

EDIT: En löydä noita data kansioita tai muita vastaavia pg_clog jne mistään ? Kokeilin findilla, mutta ei mitään.
EDIT: Ilmeisesti datat ovat täällä /var/lib/postgresql/9.5/main, mutta oikeudet ei riitä.
Vastaavasti jos yritän kirjautua postgres käyttäjänä, niin mikään salasana tai salasanattomuus ei kelpaa.
« Viimeksi muokattu: 05.08.17 - klo:08.35 kirjoittanut JA5U »

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Nyt iltapäivään mennessä ollaan tultu seuraavaan vaiheeseen:
Koodia: [Valitse]
2017-08-03 15:24:08 EEST [7645-1] FATAL:  database files are incompatible with server
2017-08-03 15:24:08 EEST [7645-2] DETAIL:  The database cluster was initialized with NAMEDATALEN 64, but the server was compiled with NAMEDATALEN 256.
2017-08-03 15:24:08 EEST [7645-3] HINT:  It looks like you need to recompile or initdb.

Recompilelle meinaa ilmeisesti paluuta siihen 63 merkin rajoitukseen eli ei auta mitään.
Initdb taas ei toimi mikäli data kansiossa on jo jotain.

Eli pitääkö tässä nyt vielä yrittää kasata se vanha psql käyntiin, ottaa sieltä dumppi ja tuoda se.
Nyt otin vain kopion data kansiosta ilman ohjelmallista dumppia.
Tosin, tuosta dumpistakaan ei taas tiedä, että onnistuuko silläkään vai tuleeko sama herja.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Jaa, no sillä dumpilla se sitten onnistui ja tarkemmin ottaen tein dumpin pgAdmin3 käyttöliittymän kautta.

Vastaavasti sisään toin sen seuraavasti:
Koodia: [Valitse]
Ensin initdb data kansiossa ja sitten
postgres -U [postgres user] -f  [path to dump file]

En kyllä tiedä, että miten pelaa, mutta pelaa.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #3 : 04.08.17 - klo:09.59 »
No eipä se nyt sitten toiminutkaan.

Kaikki postgresql kansiot on nyt kyllä niin levällään, että ei tästä ota erkkikään tolkkua.
Mikään dokumentaatio ei vastaa ainakaan polkujen osalta alkuunkaan, jonka lisäksi kaikki on hajautettu miten sattuu.

Ensimmäinen oli siis apt-getillä asennettu ja nyt piti alkaa säätämään tuon käännöksen kanssa.
Mikään niissä ei täsmää keskenään eikä dokumentaatiosta ole hyötyä vaan kaikki pitää selvitellä, että mihinköhän se ja tuo on laitettu ja mistähän tämä nyt hakee tuota ja miksei sitä löydykään...

Esim. nämä kaikki ei vaan tajua, että mitä virkaa on noin monella kansiolla:
Koodia: [Valitse]
./etc/postgresql/9.5
./var/lib/postgresql/9.5
./usr/local/pgsql/data_old/9.5 // Nämä kansiot tiedän tulleen
./usr/local/pgsql/include/9.5 // sen käännöksen myötä
./usr/share/postgresql/9.5
./usr/lib/postgresql/9.5

Ja onko noita lib, share jne kansioita kuvattu jossain "Ubuntu" spesifisti eli onko niitä tarkoitus käyttää tietyllä tapaa, kun tuntee "filosofian"?
Jos sais jonkunlaisen tolkun...
« Viimeksi muokattu: 04.08.17 - klo:10.03 kirjoittanut JA5U »

_Pete_

  • Käyttäjä
  • Viestejä: 1836
  • Fufufuuffuuu
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #4 : 04.08.17 - klo:10.35 »
Tyhmä kysymys: miksi taulun nimen pitää olla pidempi kun 64 merkkiä? :)

matsukan

  • Käyttäjä
  • Viestejä: 2148
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #5 : 04.08.17 - klo:13.07 »
Samaa mietin minäkin.  :P  Mikset tee tietokantaan taulua jossa on mappaus tarvittavien tosipitkiin nimeihin ja koodaa jollakin hattugeneraattorilla vaikka hexakoodeilla taulujen nimet  ?

(en tiedä onnistuuko tämä mutta 64 merkkiä tosipitkä ja niistä pitäisi löytyä tarpeeksi vaihtoehtoja minkä tahansa tietokannan tarpeiksi)

Tai sitten hajoita tietokanta eri schemoihin. PostgreSQL taipuu tähänkin.
« Viimeksi muokattu: 04.08.17 - klo:13.11 kirjoittanut matsukan »
Pohjois-pohjanmaa
-- motto:  backupin tarve huomataan aina liian myöhään

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #6 : 04.08.17 - klo:13.37 »
Tyhmä kysymys: miksi taulun nimen pitää olla pidempi kun 64 merkkiä? :)

En tiedä, mutta en ala tuota CMS:kään puukottamaan :)
Se generoi ne taulujen nimet ja vähänkin luettavemmat nimet muodostuvat äkkiä pitkiksi.

En myöskään ymmärrä, että miksi tuommoinen rajoitus on kantaan alunperin tehty.
Molemmat tapaukset kenties siis hieman ongelmallisia, ja kun ne laitetaan vielä samaan stackiin, niin...

EDIT: en kyllä ymmärrä, että miten netistä ei löydy yhtään vastaava tapausta, vaikka kyseessä on hyvin tunnetut avoimen lähdekoodin ratkaisut  :o
« Viimeksi muokattu: 04.08.17 - klo:13.39 kirjoittanut JA5U »

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #7 : 04.08.17 - klo:16.38 »
Tyhmä kysymys: miksi taulun nimen pitää olla pidempi kun 64 merkkiä? :)

En tiedä, mutta en ala tuota CMS:kään puukottamaan :)
Se generoi ne taulujen nimet ja vähänkin luettavemmat nimet muodostuvat äkkiä pitkiksi.

Kuulostaa aika erikoiselta ja hasardilta tietokantaskeemalta. Mikä CMS tekee tuollaista?

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #8 : 04.08.17 - klo:17.48 »
Tyhmä kysymys: miksi taulun nimen pitää olla pidempi kun 64 merkkiä? :)

En tiedä, mutta en ala tuota CMS:kään puukottamaan :)
Se generoi ne taulujen nimet ja vähänkin luettavemmat nimet muodostuvat äkkiä pitkiksi.

Kuulostaa aika erikoiselta ja hasardilta tietokantaskeemalta. Mikä CMS tekee tuollaista?
Drupal 7.

Nyt olen jumissa, jossa psql herjaa seuraava, kun yritän ajaa "CREATE EXTENSION postgis;":
Koodia: [Valitse]
ERROR:  could not access file "$libdir/postgis-2.2": No such file or directory
Olen tarkastanut $libdir arvon pg_config skriptillä sekä paikallistanut kaikki eri sijainnit, joissa tuo on saatavilla.
En vaan pääse kärryille, että mikä tuo postgis-2.2 tosiasiallisesti on tai pitäisi olla: kansio vai tiedosto (ja minkälainen).

Tähän mennyt taas hyvää devausaikaa pari päivää, kun sitä ei ole muutenkaan yhtään ylimääräistä.

EDIT: Ja nyt en taas voi muuta kuin ihmmetellä.
Sammutin sen uuden tietokantapalvelimen ja avasin vanhan, joka nieleekin nyt vaikka minkälaisen nimen eikä herjaa mitään.
« Viimeksi muokattu: 04.08.17 - klo:18.17 kirjoittanut JA5U »

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #9 : 04.08.17 - klo:18.40 »
Nyt olen jumissa, jossa psql herjaa seuraava, kun yritän ajaa "CREATE EXTENSION postgis;":
Koodia: [Valitse]
ERROR:  could not access file "$libdir/postgis-2.2": No such file or directory
Olen tarkastanut $libdir arvon pg_config skriptillä sekä paikallistanut kaikki eri sijainnit, joissa tuo on saatavilla.
En vaan pääse kärryille, että mikä tuo postgis-2.2 tosiasiallisesti on tai pitäisi olla: kansio vai tiedosto (ja minkälainen).

Eiköhän se ole postgis-laajenoksen dynaaminen kirjasto. Miten olet asentanut kyseisen laajennoksen? Ubuntuun se on paketoitu omaksi erikseen asennettavaksi paketikseen, jos siis nyt käytät virallisia Postgres-paketteja?


Voisin muuten lämpimästi suositella Dockeria ajoympäristöjen vakiointiin, jos teet paljonkin tällaisia asennuksia. Tietokannat, CMS:t ja muut isommat ja pienemmät komponentit voi kivasti pudottaa paikalleen valmiista imageista, ja kustomointeja varten voi kirjoitella omat Dockerfilet jonkun sopivan perusimagen päälle. Vaatii toki alkuun hieman opiskelua, mutta tuohon suuntaan ollaan vahvasti menossa joka tapauksessa.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #10 : 05.08.17 - klo:08.30 »
Nyt olen jumissa, jossa psql herjaa seuraava, kun yritän ajaa "CREATE EXTENSION postgis;":
Koodia: [Valitse]
ERROR:  could not access file "$libdir/postgis-2.2": No such file or directory
Olen tarkastanut $libdir arvon pg_config skriptillä sekä paikallistanut kaikki eri sijainnit, joissa tuo on saatavilla.
En vaan pääse kärryille, että mikä tuo postgis-2.2 tosiasiallisesti on tai pitäisi olla: kansio vai tiedosto (ja minkälainen).

Eiköhän se ole postgis-laajenoksen dynaaminen kirjasto. Miten olet asentanut kyseisen laajennoksen? Ubuntuun se on paketoitu omaksi erikseen asennettavaksi paketikseen, jos siis nyt käytät virallisia Postgres-paketteja?


Voisin muuten lämpimästi suositella Dockeria ajoympäristöjen vakiointiin, jos teet paljonkin tällaisia asennuksia. Tietokannat, CMS:t ja muut isommat ja pienemmät komponentit voi kivasti pudottaa paikalleen valmiista imageista, ja kustomointeja varten voi kirjoitella omat Dockerfilet jonkun sopivan perusimagen päälle. Vaatii toki alkuun hieman opiskelua, mutta tuohon suuntaan ollaan vahvasti menossa joka tapauksessa.
Alunperin asensin kaiken paketeista ja nyt, kun aloin räätälöimään, niin en ole erikseen postgisiä asentanut vaan kopioinut tai muuttanut control tiedostossa olevaa polkua.

Dockerit on ollu mielessä jo pari vuotta, mutten ole löytänyt mainitsemallesi itseopiskelulle aikaa.
Ja jotain opiskelumateriaaliakin pitäisi kaivella jostain...

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #11 : 05.08.17 - klo:11.20 »
Alunperin asensin kaiken paketeista ja nyt, kun aloin räätälöimään, niin en ole erikseen postgisiä asentanut vaan kopioinut tai muuttanut control tiedostossa olevaa polkua.

No tavalla tai toisella postgis on asennettava järjestelmään, jos joku ohjelmisto sitä vaatii. Se ei sisälly Postgresiin. Jos käytät itse käännettyä Postgresiä, joudut kääntämään myös Postgisin itse sen päälle.

Suosittelisin kyllä palaamaan viralliseen muiden ylläpitämään paketointiin, jos oma aika on arvokasta.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #12 : 06.08.17 - klo:20.06 »
Alunperin asensin kaiken paketeista ja nyt, kun aloin räätälöimään, niin en ole erikseen postgisiä asentanut vaan kopioinut tai muuttanut control tiedostossa olevaa polkua.

No tavalla tai toisella postgis on asennettava järjestelmään, jos joku ohjelmisto sitä vaatii. Se ei sisälly Postgresiin. Jos käytät itse käännettyä Postgresiä, joudut kääntämään myös Postgisin itse sen päälle.

Suosittelisin kyllä palaamaan viralliseen muiden ylläpitämään paketointiin, jos oma aika on arvokasta.
Juu, onhan se aiemmin asennettu ja nyt vain viitata siihen "kirjastoon" sitä hyödyntävästä ohjelmistosta/sen konffista.
Ei vaan tunnu onnistuvan, mutta kuten todettua, niin nyt se vanhakin nielee jostain syystä pidempääkin pidempiä taulunnimiä.

Mene ja tiedä - suurin huolenaihe tässä on tuon kehitysympäristön uudelleen toteuttaminen tuotannossa eli nykyisen "arpakuution" toimivuus, kun on mysteeri itsessään, niin se voi olla vaikea nk. toisintaa.

Dockeri lienisi ratkaisu tuohonkin eli ainakin kärjistetysti kuvattuna oman kehityskontin voisi vain pudottaa tuotantoon ja sitä rataa.

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #13 : 06.08.17 - klo:20.39 »
Alunperin asensin kaiken paketeista ja nyt, kun aloin räätälöimään, niin en ole erikseen postgisiä asentanut vaan kopioinut tai muuttanut control tiedostossa olevaa polkua.

No tavalla tai toisella postgis on asennettava järjestelmään, jos joku ohjelmisto sitä vaatii. Se ei sisälly Postgresiin. Jos käytät itse käännettyä Postgresiä, joudut kääntämään myös Postgisin itse sen päälle.

Suosittelisin kyllä palaamaan viralliseen muiden ylläpitämään paketointiin, jos oma aika on arvokasta.
Juu, onhan se aiemmin asennettu ja nyt vain viitata siihen "kirjastoon" sitä hyödyntävästä ohjelmistosta/sen konffista.
Ei vaan tunnu onnistuvan, mutta kuten todettua, niin nyt se vanhakin nielee jostain syystä pidempääkin pidempiä taulunnimiä.

Joo mutta jos käytät nyt itse käännettyä PostgreSQL:ää, sinun täytyy kääntää myös Postgis itse kyseistä Postgres-asennusta vasten. Oletko tehnyt sen? Jos taas siirryt Ubuntun viralliseen paketointiin, kelpaa samasta virallisestä lähteestä saatava valmis postgis-paketti.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #14 : 06.08.17 - klo:21.45 »
Alunperin asensin kaiken paketeista ja nyt, kun aloin räätälöimään, niin en ole erikseen postgisiä asentanut vaan kopioinut tai muuttanut control tiedostossa olevaa polkua.

No tavalla tai toisella postgis on asennettava järjestelmään, jos joku ohjelmisto sitä vaatii. Se ei sisälly Postgresiin. Jos käytät itse käännettyä Postgresiä, joudut kääntämään myös Postgisin itse sen päälle.

Suosittelisin kyllä palaamaan viralliseen muiden ylläpitämään paketointiin, jos oma aika on arvokasta.
Juu, onhan se aiemmin asennettu ja nyt vain viitata siihen "kirjastoon" sitä hyödyntävästä ohjelmistosta/sen konffista.
Ei vaan tunnu onnistuvan, mutta kuten todettua, niin nyt se vanhakin nielee jostain syystä pidempääkin pidempiä taulunnimiä.

Joo mutta jos käytät nyt itse käännettyä PostgreSQL:ää, sinun täytyy kääntää myös Postgis itse kyseistä Postgres-asennusta vasten. Oletko tehnyt sen? Jos taas siirryt Ubuntun viralliseen paketointiin, kelpaa samasta virallisestä lähteestä saatava valmis postgis-paketti.
Täytyy sanoa, että en tiedä tuosta juuri tuon taivaallista.
Miksei se jo olemassa oleva ei kävisi? Näin yksinkertaiselle sen tuntuu olevan sama asia.

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #15 : 06.08.17 - klo:21.51 »
Joo mutta jos käytät nyt itse käännettyä PostgreSQL:ää, sinun täytyy kääntää myös Postgis itse kyseistä Postgres-asennusta vasten. Oletko tehnyt sen? Jos taas siirryt Ubuntun viralliseen paketointiin, kelpaa samasta virallisestä lähteestä saatava valmis postgis-paketti.
Täytyy sanoa, että en tiedä tuosta juuri tuon taivaallista.
Miksei se jo olemassa oleva ei kävisi? Näin yksinkertaiselle sen tuntuu olevan sama asia.

Teknisesti riippuu siitä miten kirjasto ja Postgresin liitännäisrajapinta on toteutettu, mutta on varsin todennäköistä, että siinä ei ole kovin paljon liikkumavaraa, vaan kirjasto täytyy kääntää juuri käytettävää Postgresin binääriasennusta vasten. Latautumisongelmia voi tulla, vaikka olisit asentanut täsmälleen saman version tietokannasta kuin minkä Ubuntun paketointi tarjoaa.

Toinen juttu on sitten se sijainti, eli plugarin täytyy olla sellaisessa paikassa, josta Postgres löytää sen ja lataa käyttöön. Virallisia paketteja käyttäessä siitäkin on huolehdittu puolestasi. Itse kääntäessäsi taas konfiguraatioskripti tunnistaa oikean sijainnin. Jos yhdistelet näitä asennustapoja, joudut itse selvittämään yksityiskohdat.
« Viimeksi muokattu: 06.08.17 - klo:21.54 kirjoittanut nm »

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #16 : 07.08.17 - klo:22.31 »
Teknisesti riippuu siitä miten kirjasto ja Postgresin liitännäisrajapinta on toteutettu, mutta on varsin todennäköistä, että siinä ei ole kovin paljon liikkumavaraa, vaan kirjasto täytyy kääntää juuri käytettävää Postgresin binääriasennusta vasten. Latautumisongelmia voi tulla, vaikka olisit asentanut täsmälleen saman version tietokannasta kuin minkä Ubuntun paketointi tarjoaa.

Toinen juttu on sitten se sijainti, eli plugarin täytyy olla sellaisessa paikassa, josta Postgres löytää sen ja lataa käyttöön. Virallisia paketteja käyttäessä siitäkin on huolehdittu puolestasi. Itse kääntäessäsi taas konfiguraatioskripti tunnistaa oikean sijainnin. Jos yhdistelet näitä asennustapoja, joudut itse selvittämään yksityiskohdat.
No se on tullut selväksi, että saa kyllä selvitellä yksityiskohtia.
En pääse kärryille, että miksi se ei löydä tai voi päästä käsiksi ko. tiedostoon.
Onko mitään kätevää loggeri, joka antaisi enemmän tietoa, kun
  • a) jotain olematonta tiedostoa yritetään lukea (mikä, kuka jne) tai
  • b) jos tiedosto olemassa, niin miksi sitä ei voitu lukea (mikä, kuka, oikeudet tmv)?

nm

  • Käyttäjä
  • Viestejä: 16232
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #17 : 07.08.17 - klo:22.49 »
En pääse kärryille, että miksi se ei löydä tai voi päästä käsiksi ko. tiedostoon.
Onko mitään kätevää loggeri, joka antaisi enemmän tietoa, kun
  • a) jotain olematonta tiedostoa yritetään lukea (mikä, kuka jne) tai
  • b) jos tiedosto olemassa, niin miksi sitä ei voitu lukea (mikä, kuka, oikeudet tmv)?

Ei nyt tule mieleen mitään erityisen kätevää. Jollain prosessin ja kernelin väliin asettuvalla debuggerilla noita ehkä voisi nähdä, mutta enpä tiedä maksaako vaivaa tässä tapauksessa.

Ubuntun postgresql-9.5-postgis-2.2 -paketin tiedostolistaus näyttää tältä: https://packages.ubuntu.com/xenial/amd64/postgresql-9.5-postgis-2.2/filelist

CREATE EXTENSION postgis -komento kaipaa siis tuota PosgreSQL:n kirjastohakemistossa olevaa postgis-2.2.so -tiedostoa. Kun käännät ja asennat postgisin manuaalisesti nykyistä PosgreSQL-asennustasi vasten, tarvittavien kirjastojen pitäisi kyllä päätyä oikeaan sijaintiin.

JA5U

  • Käyttäjä
  • Viestejä: 462
    • Profiili
Vs: PostgreSQL kääntäminen ja tietokannan palautus
« Vastaus #18 : 08.08.17 - klo:15.41 »
En pääse kärryille, että miksi se ei löydä tai voi päästä käsiksi ko. tiedostoon.
Onko mitään kätevää loggeri, joka antaisi enemmän tietoa, kun
  • a) jotain olematonta tiedostoa yritetään lukea (mikä, kuka jne) tai
  • b) jos tiedosto olemassa, niin miksi sitä ei voitu lukea (mikä, kuka, oikeudet tmv)?

Ei nyt tule mieleen mitään erityisen kätevää. Jollain prosessin ja kernelin väliin asettuvalla debuggerilla noita ehkä voisi nähdä, mutta enpä tiedä maksaako vaivaa tässä tapauksessa.

Ubuntun postgresql-9.5-postgis-2.2 -paketin tiedostolistaus näyttää tältä: https://packages.ubuntu.com/xenial/amd64/postgresql-9.5-postgis-2.2/filelist

CREATE EXTENSION postgis -komento kaipaa siis tuota PosgreSQL:n kirjastohakemistossa olevaa postgis-2.2.so -tiedostoa. Kun käännät ja asennat postgisin manuaalisesti nykyistä PosgreSQL-asennustasi vasten, tarvittavien kirjastojen pitäisi kyllä päätyä oikeaan sijaintiin.
Harmi vaan, että nyt on sellainen fiilis, ettei enää uskalla koskea mihinkään.
Nyt se siis vaikuttaa toimivan, muttei ole mitään hajua, että miksi ja miten.