=?iso-8859-2?Q?=5BMySQL=5D_i_MS_Acccess_insert_do_dw=F3ch_tab el?=
Jacek - 17-01-2006 10:54
=?iso-8859-2?Q?=5BMySQL=5D_i_MS_Acccess_insert_do_dw=F3ch_tab el?= Mam dwie tabele tab1 i tab2. W tab1 są kolumy: id (primary key), pesel a w tabeli tab2: id, imie. Utworzyłem zapytanie dodające nowy rekord do tabeli tab1 w postaci:
INSERT INTO tab1 (id, pesel) VALUES ('1', '12345678');
i teraz w ms access to idzie czyli utworzoby jest nowy wiersz w tab1 natomiast w MySql nie jest tworzony rekord, wipisuje mi błąd o treści:
"Cannot add a child row: a foreign key constraint fails "
Może mi ktoś podpowiedzieć jak ma wyglądać zapyanie dodające taki rekod do bazy mysql??
-- Pozdrowienia, Jacek W.
Slawomir Cichy - 17-01-2006 10:54
Jacek wrote: > Mam dwie tabele tab1 i tab2. W tab1 są kolumy: id (primary key), > pesel a w > tabeli tab2: id, imie. > Utworzyłem zapytanie dodające nowy rekord do tabeli tab1 w > postaci: > > INSERT INTO tab1 (id, pesel) VALUES ('1', '12345678'); > > i teraz w ms access to idzie czyli utworzoby jest nowy wiersz w > tab1 natomiast w MySql nie jest tworzony rekord, wipisuje mi błąd > o treści: > > "Cannot add a child row: a foreign key constraint fails " > > Może mi ktoś podpowiedzieć jak ma wyglądać zapyanie dodające taki > rekod do bazy mysql?? >
Zapytanie jest jak najbardziej prawidlowe. Kwestia tego czy rozumiesz co napisal do Ciebie serwer, a poinformowal cie, ze nie mozesz dodac nowego rekordu, poniewaz masz zdefiniowany zwiazek integralnosci w postaci klucza obcego do innej tabeli i serwer bazy nie znajduje w tabeli nadrzednej wartosci, ktora probujesz wprowadzic do tabeli podrzednej.
Zobacz jaka masz zdefiniwana tablice nadrzedna, i dodaj do niej odpowiedni rekord, a pozniej dodaj rekord do tablicy podrzednej.
pozdrawiam Slawas
Slawomir Cichy - 17-01-2006 10:54
Slawomir Cichy wrote: > Jacek wrote: > >> Mam dwie tabele tab1 i tab2. W tab1 są kolumy: id (primary key), >> pesel a w >> tabeli tab2: id, imie. >> Utworzyłem zapytanie dodające nowy rekord do tabeli tab1 w >> postaci: >> >> INSERT INTO tab1 (id, pesel) VALUES ('1', '12345678'); >> >> i teraz w ms access to idzie czyli utworzoby jest nowy wiersz w >> tab1 natomiast w MySql nie jest tworzony rekord, wipisuje mi błąd >> o treści: >> >> "Cannot add a child row: a foreign key constraint fails " >> >> Może mi ktoś podpowiedzieć jak ma wyglądać zapyanie dodające taki >> rekod do bazy mysql?? >> > > Zapytanie jest jak najbardziej prawidlowe. Kwestia tego czy rozumiesz co > napisal do Ciebie serwer, a poinformowal cie, ze nie mozesz dodac nowego > rekordu, poniewaz masz zdefiniowany zwiazek integralnosci w postaci > klucza obcego do innej tabeli i serwer bazy nie znajduje w tabeli > nadrzednej wartosci, ktora probujesz wprowadzic do tabeli podrzednej. > > Zobacz jaka masz zdefiniwana tablice nadrzedna, i dodaj do niej > odpowiedni rekord, a pozniej dodaj rekord do tablicy podrzednej. > > pozdrawiam > Slawas
po prostu sprobuj wpierw dodac imie a pozniej dodawaj pesel (odwroc kolejnosc operacji)
Jacek - 19-01-2006 09:32
=?iso-8859-2?Q?Re=3A_=5BMySQL=5D_i_MS_Acccess_insert_do_dw=F3 ch_tabel?=
Witaj Slawomir,
W Twoim liście datowanym 17 stycznia 2006 (11:12:38) można przeczytać:
> Slawomir Cichy wrote: >> Jacek wrote: >> >>> Mam dwie tabele tab1 i tab2. W tab1 są kolumy: id (primary key), >>> pesel a w >>> tabeli tab2: id, imie. >>> Utworzyłem zapytanie dodające nowy rekord do tabeli tab1 w >>> postaci: >>> >>> INSERT INTO tab1 (id, pesel) VALUES ('1', '12345678'); >>> >>> i teraz w ms access to idzie czyli utworzoby jest nowy wiersz w >>> tab1 natomiast w MySql nie jest tworzony rekord, wipisuje mi błąd >>> o treści: >>> >>> "Cannot add a child row: a foreign key constraint fails " >>> >>> Może mi ktoś podpowiedzieć jak ma wyglądać zapyanie dodające taki >>> rekod do bazy mysql?? >>> >> >> Zapytanie jest jak najbardziej prawidlowe. Kwestia tego czy rozumiesz co >> napisal do Ciebie serwer, a poinformowal cie, ze nie mozesz dodac nowego >> rekordu, poniewaz masz zdefiniowany zwiazek integralnosci w postaci >> klucza obcego do innej tabeli i serwer bazy nie znajduje w tabeli >> nadrzednej wartosci, ktora probujesz wprowadzic do tabeli podrzednej. >> >> Zobacz jaka masz zdefiniwana tablice nadrzedna, i dodaj do niej >> odpowiedni rekord, a pozniej dodaj rekord do tablicy podrzednej. >> >> pozdrawiam >> Slawas
> po prostu sprobuj wpierw dodac imie a pozniej dodawaj pesel (odwroc > kolejnosc operacji) próbowałem najpierw w tabeli "rodzic" a potem w tabeli "dziecko" ale neistety mySql nie chce to zapytanie przełknąć.. niewiem czemu..
-- Pozdrowienia, Jacek W.
Jacek - 19-01-2006 09:32
=?iso-8859-2?Q?Re=3A_=5BMySQL=5D_i_MS_Acccess_insert_do_dw=F3 ch_tabel?=
Witaj Slawomir,
W Twoim liście datowanym 17 stycznia 2006 (11:12:38) można przeczytać:
> po prostu sprobuj wpierw dodac imie a pozniej dodawaj pesel (odwroc > kolejnosc operacji) Wykasowałem tamte tabele i po raz kolejny stworzyłem nowe.
tab1 CREATE TABLE `tab1` ( `id` INT NOT NULL AUTO_INCREMENT , `imie` VARCHAR( 20 ) NOT NULL , `nazwisko` VARCHAR( 30 ) NOT NULL , PRIMARY KEY ( `id` ) );
tab2 CREATE TABLE `tab2` ( `id` INT NOT NULL , `miejscowosc` VARCHAR( 20 ) NOT NULL , `ulica` VARCHAR( 40 ) NOT NULL , `nrdomu` VARCHAR( 10 ) NOT NULL , INDEX ( `id` ) );
W widoku relacyjnym tab2 ustawiłem pole tab2id->id.tab1 a w tabeli tab1 tab1.id->tab2.id
i niestety.... polecenie
INSERT INTO `tab1` ( `id` , `imie` , `nazwisko` ) VALUES ( '', 'sss', 'ss' );
nie działa... nie wiem już sam dlaczego skoro w ms access idzie bez problemów takie polecenie insert w tabelach z relacjami.
Dalej mam "Cannot add a child row: a foreign key constraint fails".
Obojętnie czy dodaję nowy rekord w tab1 czy w tab2. Powiem że polecenie działa jak nie ma relacji pomiędzy tabelami. Ponieważ jestem początkujący z mySql to nie wiem co może być przyczyną. Uprawnienia do INSERT mam.
-- Pozdrowienia, Jacek W.
Slawomir Cichy - 19-01-2006 09:33
Jacek wrote: > Witaj Slawomir, > > W Twoim liście datowanym 17 stycznia 2006 (11:12:38) można przeczytać: > /ciach/ > > W widoku relacyjnym tab2 ustawiłem pole tab2id->id.tab1 a w > tabeli tab1 tab1.id->tab2.id >
jezeli dobrze zrozumialem tworzysz dwa zwiazki zwiazki klucza obcego:
tab2.id w referencji na tab1.id i tab1.id w referencji na tab2.id
ooops... a jaki to ma sens? zdefiniuj tylko _jeden_ zwiazek, bo teraz masz "zakleszczenie" - nie mozesz dodac rekordu do tabeli tab1 bo nie ma rekordu nadrzednego w tab2 i to samo odwrotnie: nie dodasz rekordu do tab2 bo nie ma rekordu nadrzednego w tab1 :(
Jak zdefinujesz zwiazek tab2.id w referencji na tab1.id to wpierw wprowadzaj do tab1 a pozniej do tab2
pozdrawiam Slawas
Jacek - 19-01-2006 09:33
=?iso-8859-2?Q?Re:_[MySQL]_i_MS_Acccess_insert_do_dw=F3ch_tabel?=
Witaj Slawomir,
W Twoim liście datowanym 18 stycznia 2006 (12:35:04) można przeczytać:
> jezeli dobrze zrozumialem tworzysz dwa zwiazki zwiazki klucza obcego:
> tab2.id w referencji na tab1.id > i > tab1.id w referencji na tab2.id
> ooops... a jaki to ma sens? zdefiniuj tylko _jeden_ zwiazek, bo teraz > masz "zakleszczenie" - nie mozesz dodac rekordu do tabeli tab1 bo nie > ma rekordu nadrzednego w tab2 i to samo odwrotnie: nie dodasz rekordu do > tab2 bo nie ma rekordu nadrzednego w tab1 :( > Jak zdefinujesz zwiazek > tab2.id w referencji na tab1.id > to wpierw wprowadzaj do tab1 a pozniej do tab2
Dzięki za odpowiedź. Porawdziłem sobie z tym problemem. Po prostu tworzyłem tabele w phpmyadmin i no coż... myślałem że tak trzeba definiować te związki. (Nie znałem ani phpmyadmin ani mysql'a.) A teraz powiem jak sobie poradziłem....po prostu utworzyłem tabele z wiersza polecen mysql.. i tam zdefiniowałem "foreign key" ale tylko w jednej z dwóch utworzonych tabel no i .. zadziałało.
Dzięki za wyjaśnienie tego powyżej. Nie obeszło się bez studiowania ksiązki mysql po angielsku ze zwróceniem uwagi na tabele innodb :) Na przyszłośc będę już na pewno wiedział.
-- Pozdrowienia, Jacek W.
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
Wydajność baz danych w zależności od poziomu izolacji ANSI/ISO
Czy zna (obsługuje) ktoś program Iso Draw ?
MYSQL - kodowanie w ISO-PL
strona plus baza w iso do utf-8
Kodowanie: z iso na utf
Konwesja znaków w dump'ie bazy danych - ISO -> utf-8 -> ISO -> utf-8
[MS SQL] SQL Server Agent i server zdalny
Jak =?windows-1250?Q?pobra=E6_szacowan=B9_wielko=9C=E6_zbiory_wy nikowego_w_MS?==?windows-1250?Q?_SQL_2005=3F?=
=?iso-8859-2?q?Co_oznacza_b=B3=B1d_Warning:_mysql=5Fconnect() _[function.mysql-connect]:_Can't_connect_to_local_MySQL_server_through_sock et_'/var/run/mysqld/mysqld.sock'_(2)_in?=
=?iso-8859-2?q?Informatyka,_Java,_EJB,_Ajax,_Spring=2E_Czy=BF by_to_koniec_=B6wiata,_czy_te=BF_nasze_uczelnie_b= EAd=B1_uczy=B3y_w_ko=F1cu!_czego_praktycznego_=2E= 2E=2E=2E?=
zanotowane.pldoc.pisz.plpdf.pisz.plred-hacjenda.opx.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|