Mam dziwny problem, piszę program w Delphi przy użyciu Zeos'a. Zaraz po wykonaniu kwerendy CREATE DATABASE Postgres tworzy mi nie tylko bazę danych ale też strukturę tabel i to ze starej wersji programu. Co ciekawe nawet gdy baza jest nowa i jeszcze takiej nazwy nie podawałem mam zbudowane tabele. O co tu chodzi?
postgres nic nie tworzy sam z siebie
przejedź się debugerem po programie, przejdź linijka po linijce przez kod i sam zobaczysz, że wykonuje się znacznie więcej, niż Ci się wydaje. ani Twój program, ani żadna baza danych nie dodaje spontanicznie żadnych tabel (poza ewentualnymi tabelami systemowymi).
Nie pisałbym gdybym nie sprawdził najpierw debuggerem. Nie ma bazy. Uruchamiam debuggera aż do momentu przed procedurą tworzącą. Dalej bazy nie ma. Wykonuję CREATE DATABASE i nic więcej, patrzę do pgAdmin i mam 17 tabel ze starej wersji programu
Jak usuwales stara baze? Najwyrazniej zostaly jakies wpisy/pliki starej bazy. I teraz jak tworzysz nowa o tej samej nazwie to zostaje odnowione powiazanie miedzy nazwa bazy a istniejacymi danymi.
Też tak myślałem, więc zrobiłem nową bazę jakiej jeszcze nie używałem... To samo.
Doszedłem do wniosku żeby przeinstalować postgres'a bo może coś z nim nie tak. Ale nie wiem czy nie skończy się na przeinstalowaniu Windows :) Chyba szybciej wyjdzie
ps. Dodam że program jest dwu-bazowy i na mySQL'u wszystko chodzi w porządku
I rozumiem, ze po tym jak znowu powstaje gotowa baza, dajesz drop database, pozniej create database i tez jest? A co jesli wykonasz create w samym postresie, nie z poziomu swojego programu?
Z pgAdmin'a też tworzy. Wpisałem create database new_db;
Co ciekawe mam nie tylko bazę z tabelami, ale nawet jakieś dane, które wpisywałem tydzień temu :)
Przeistalowywałem postgresa chyba 4 razy. Za każdym razem zapamiętuje pierwszą bazę, na której go uruchamiam i później jak coś tworzę, postgres konsekwetnie buduje mi strukturę pierwszej bazy danych
Dalej nie napisales jak usuwasz baze... Prosze o kod.
A jak się łączysz z bazą, używasz żródła danych (systemowego, plikowego)? To coś jakby plik konfiguracyjny dla bazy danych i jest tam też m.in. wpis DATABASE=baza_danych(domyslnie postgres), byc moze program uparcie laczy ci sie z tą bazą bo np tego nie zmieniasz... oczywiscie tak tylko zgaduje...
moze zle sie wyrazilam, nie tyle laczy co traktuje jako wzor, zrodlo danych dla nowej bazy
Jesli wlasnie nie odkryles jakiegos komputerowego zombie, to znaczy po prostu, ze masz odpalone kilka instancji serwera (lub tez kilka roznych serwerow, do wyboru). Tworzysz baze na jednym, a sprawdzasz zawartosc drugiego. Innej mozliwosci po prostu nie ma :)