Tomasz Mikołajczyk

Tomasz Mikołajczyk nauczyciel, trener
IT, Software QA
Manager

Temat: Coś nie gra - insert, klucze obce itd.

Hello. Robie inserta o takiego:

INSERT INTO firmy( `id_firmy` , `nazwa_firmy` , `ulica` , `nr_ulicy` , `miasto` , `kod_pocztowy` , `id_wojew` , `gold` , `id_kategorii` , `id_dzielnicy` , `licznik` )
VALUES (
NULL , 'Kogutek Spółka Jawna', 'Maślana', '12/8', 'Katowice', '41300', '4', '2' '4' '14', NULL )


I jedyne co dostaje to:

#1136 - Column count doesn't match value count at row 1


Sprawdziłem i w skrypcie php i pod phpmyadminem.
id_firmy to klucz glowny autoincrement.
Klucze obce: id_wojew, id_kategori, id_dzielnicy.

Zdaje sobie sprawe z tego ze mam spore braki. Ale wg. mnie logika kluczy obcych o ile sie nie myle jest nastepujaca:
np.
Ulubione owoce ludzi: [id, imie, nazwisko, ktorekolwiek_id2_in_owoce_AS_id_ulubionego_owocu]
Owoce: [id2, owoc]

Taki pseudokod.
W kazdym razie HELP. Od razu mowie, ze te moje klucze obce nie biora sie z palca czy z powietrza, tylko z formularza ktory korzysta wlasnie z tej tabeli, gdzie konkretne id sa jako glowne. Czyli za przykladem mialbym liste rozwijalna owocow i pole na imie oraz nazwisko (zakladajac ze wczesniej owoce zostaly zdefiniowane).

konto usunięte

Temat: Coś nie gra - insert, klucze obce itd.

Skoro jest auto_increment to nie potrzebnie wstawiasz id_firmy.
Po drugie, nie możesz wstawić tam nulla, gdyś jest to primary key.

Zrob cos takiego:

INSERT INTO firmy(`nazwa_firmy` , `ulica` , `nr_ulicy` , `miasto` , `kod_pocztowy` , `id_wojew` , `gold` , `id_kategorii` , `id_dzielnicy`)

VALUES ('Kogutek Spółka Jawna', 'Maślana', '12/8', 'Katowice', '41300', '4', '2' '4' '14')

konto usunięte

Temat: Coś nie gra - insert, klucze obce itd.

A gdybyś spróbował nie wstawiać niczego jako id_firmy (po prostu pominąć)?
Bartosz Lepa

Bartosz Lepa Database
Designer/Developer

Temat: Coś nie gra - insert, klucze obce itd.

po insert into pomiń kolumnę firma_id, i nic do niej nie wstawiaj, po prostu własność auto_increment powoduje to że za każdym dodaniem rekordu, ta wartość jest automatycznie zwiększana o jeden.
Tomasz Mikołajczyk

Tomasz Mikołajczyk nauczyciel, trener
IT, Software QA
Manager

Temat: Coś nie gra - insert, klucze obce itd.

próbowałem, ale nie w tym tkwi problem (chociaz faktycznie nie powinienem NULL podawac). Dalej cos nie gra, nawet jak daje tak:

INSERT INTO firmy(`nazwa_firmy` , `ulica` , `nr_ulicy` , `miasto` , `kod_pocztowy` , `id_wojew` , `gold` , `id_kategorii` , `id_dzielnicy`) VALUES ('Kogutek', 'Maślana', '12/8', 'Katowice', '41300', '4', '2' '4' '14')


ale moze struktura i zaleznosci pomoga:

CREATE TABLE `firmy` (
`id_firmy` int(10) unsigned NOT NULL auto_increment,
`nazwa_firmy` varchar(128) collate utf8_polish_ci NOT NULL,
`ulica` varchar(32) collate utf8_polish_ci NOT NULL,
`nr_ulicy` varchar(16) collate utf8_polish_ci default NULL,
`miasto` varchar(32) collate utf8_polish_ci NOT NULL,
`kod_pocztowy` char(5) collate utf8_polish_ci NOT NULL,
`id_wojew` int(10) unsigned default NULL,
`gold` int(10) unsigned NOT NULL default '0',
`id_kategorii` int(10) unsigned default NULL,
`id_dzielnicy` int(10) unsigned default '0',
`licznik` int(10) unsigned default '0',
PRIMARY KEY (`id_firmy`),
KEY `FKwojew` (`id_wojew`),
KEY `FKkategorie` (`id_kategorii`),
KEY `FKdzielnice` (`id_dzielnicy`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;



ALTER TABLE `firmy`
ADD CONSTRAINT `FKdzielnice` FOREIGN KEY (`id_dzielnicy`) REFERENCES `dzielnice` (`id_dzielnicy`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `FKkategorie` FOREIGN KEY (`id_kategorii`) REFERENCES `kategorie` (`id_kategorii`) ON DELETE SET NULL ON UPDATE CASCADE,
ADD CONSTRAINT `FKwojew` FOREIGN KEY (`id_wojew`) REFERENCES `wojewodztwa` (`id_wojew`) ON DELETE SET NULL ON UPDATE CASCADE;

konto usunięte

Temat: Coś nie gra - insert, klucze obce itd.

INSERT INTO firmy(`nazwa_firmy` , `ulica` , `nr_ulicy` , `miasto` , `kod_pocztowy` , `id_wojew` , `gold` , `id_kategorii` , `id_dzielnicy`) VALUES ('Kogutek', 'Maślana', '12/8', 'Katowice', '41300', '4', '2' '4' '14')

'2' '4' '14' <- sugeruje dodac przecinki :)
i dla cyfr nie trzeba '' :)
Tomasz Mikołajczyk

Tomasz Mikołajczyk nauczyciel, trener
IT, Software QA
Manager

Temat: Coś nie gra - insert, klucze obce itd.

super. Mowia, ze diabel tkwi w szczegolach. Jeszcze 1 pytanie na marginesie. Jak chce zrobic inserta typu:
INSERT INTO tabela VALUES (wart1, wart2, wart3)
a na poczatku mam wlasnie id ktory jest autoincrement, to co zastosowac zamiast niefortunnego NULL w moim przypadku, zeby sam sie dodal z automatu (nie chce korzystac z wyliczania poszczegolnych pol). Chodzi o to, czy jest jakas kropka, gwiazdka, czy cos co powie mysql'owi zeby sam sobie policzyl co ma za 1 pole wstawic skoro jest z automatu?

konto usunięte

Temat: Coś nie gra - insert, klucze obce itd.

wstaw po prostu puste
np jesli masz strukture:
id imie nazwisko

zrob
INSERT INTO tabelka VALUES ('','imie','nazwisko');

konto usunięte

Temat: Coś nie gra - insert, klucze obce itd.

Mozesz uzywac NULLa
Jesli masz wymuszone auto_increment, sugeruje po prostu uzywac tam NULL <- niee.. nie ma w tym nic zlego ;)
Wedlug mnie ma to nawet wiekszy sens bo przynajmniej wiem, ktore pola sa automatyczne.
Tomasz Mikołajczyk

Tomasz Mikołajczyk nauczyciel, trener
IT, Software QA
Manager

Temat: Coś nie gra - insert, klucze obce itd.

dziekuje po raz kolejny ale mozecie miec pewnosc, ze jeszcze tu wroce ;)

Następna dyskusja:

Poszukuje czlowieka, nie pr...




Wyślij zaproszenie do