Autor Zpráva
PetraPP
Profil
Ahojte,
vkládám do mySQL data a nejdou mně vložit. V mySQL mám ID jako INT a když přes INSERT do něj nic nevložím "", tak se neuloží. Jak mohu mySQL nastavit na straně serveru, aby to ukládat šlo a do mySQL se uložila nula "0". Když tam totiž dám výchozí nulu v mySQL, tak to stále nechce uložit.
lionel messi
Profil
PetraPP:

Zdravím,

v zásade mám pocit, že by sa mi hodilo trošku viac informácií, napr. čo znamená „tak to stále nechce uložit.“ – zjavne to hlási nejakú chybu.

V princípe si treba uvedomiť, že ak má stĺpec nastavený AUTO_INCREMENT (čo číselné stĺpce s pomenovaním ID často majú), tak nemôže mať explicitne nastavený DEFAULT (predvolenú hodnotu) na 0, pretože pracuje s tzv. implicitným DEFAULT (predvolená hodnota je rovná nasledujúcemu číslu v sekvencii) – slúžia ako primárne, resp. unikátne kľúče.

Ak stĺpec AUTO_INCREMENT nemá, treba mu nastaviť DEFAULT takto:

ALTER TABLE `tabulka` CHANGE `id` `id` INT(11) NOT NULL DEFAULT 0;

A pri INSERTe je zrejme najčistejšie riešenie takýto stĺpec vôbec neuvádzať, čiže:

INSERT INTO `tabulka` (`zeme`, `pocet_obyvatel`) VALUES ('Česko', 10.65), ('Slovensko', 5.45)

Česko aj Slovensko budú mať automaticky id 0.
PetraPP
Profil
Jakým příkázem v mySQL zjistím nastavení? Některé mySQL databáže vkládaji nulu automaticky. Chtěla bych to nastavit globálně. Mám tam snad stovku souborů :(
Keeehi
Profil
Jakým příkázem v mySQL zjistím nastavení?
Například pomocí
SHOW CREATE TABLE `tabulka`

Jak s databází pracuješ? Máš na to nějaký klikací nástroj, třeba Adminer, že?
PetraPP
Profil
Spíše mně jde o nastavení mySQL, tedy něco jako (sql-mode), abych dostala například: "NO_BACKSLASH_ESCAPES,STRICT_TRANS_TABLE,NO_AUTO_CREATE_USER".
Mockrát děkuji.
Kajman
Profil
SELECT @@sql_mode

případně
SELECT @@GLOBAL.sql_mode;
SELECT @@SESSION.sql_mode;

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0