Autor Zpráva
gaminn
Profil *
Zdravím,
mám dvě totožné tabulky tabulka1 (založena zhruba před půl rokem na starší verzi MySQL) a tabulka2 (založena tím způsobem, že se v PHPMyAdminu provedl export struktury tabulka1 a tento dotaz byl v PHPMyAdminu proveden). Důležité je, že obě obsahují pole 'description', které je typu text.

Pokud přidávám do tabulka1 záznam tímto způsobem:

INSERT INTO `tabulka1` () VALUES ();

tak vše funguje (do tabulky se přidá další záznam s novým ID, které se generuje díky auto_increment).

Pokud ale naprosto stejným příkazem přidávám záznam do tabulka2, nic se nepřidá. Dotaz na tabulka2 jsem zkoušel v PHPMyAdminu a hodí to 'Field 'description' doesn't have a default value'. Ano, to je pravda, defaultní hodnotu description nastavenou nemá, protože typ text ani žádnou defaultní hodnotu mít nastavenou nemůže. Pokud zkusím vložit záznam tímto způsobem:

INSERT INTO `tabulka2` (`description`) VALUES ('');

vše proběhne v pořádku, záznam se vloží. Pokud nemá jakékoliv jiné pole v tabulka2 nastavenou defaultní hodnotu, nelze tedy stejně jako u description vložit záznam bez uvedení názvu tohoto pole v dotazu. Je ale zajímavé, že ve zcela totožné tabulka1 (připomínám, že byla založena na jiné verzi mysql) to lze.

Dokáže mi někdo poradit, jak rozchodit vkládání záznamů tak, jak potřebuji? (upozorňuji, že je opravdu nutné, aby to byl takovýto dotaz: INSERT INTO `tabulka2` () VALUES ();, bez uvádění jakýchkoliv polí)
xixli
Profil
Píšeš, že na novšej verzii to nejde. Imho to je bug staršej verzie, ale nie som db špecialista.
Uvádzanie polí spôsobom INSERT INTO `tabulka` () VALUES (); sa mi moc nepáči, pripadá mi to neštandartné, skôr by to chcelo vkladať tak nejak, ako si to spravil potom (INSERT INTO `tabulka2` (`description`) VALUES ('');),
resp. skús používať INSERT INTO `tabulka2` VALUES (''); teda bez uvádzania (`description`)
gaminn
Profil *
INSERT INTO `tabulka2` VALUES (''); způsobuje vypsání erroru '#1136 - Column count doesn't match value count at row 1'.

V manuálu k mé verzi MySQL (5.0.16) je napsáno přesně to moje chování: Pokud nejsou uvedeny všechny názvy sloupců v INSERTU, MySQL jede v modu strict a některý sloupec nemá nastavenu defaultní hodnotu, skončí INSERT errorem...... To se mi zdá trochu nedomyšlené vzhledem ke skutečnosti, že blob a text nemohou mít default hodnoty. Ufff, to jsou ale vymyšlenosti;) Musím to celé předělat....
Toto téma je uzamčeno. Odpověď nelze zaslat.