Autor | Zpráva | ||
---|---|---|---|
PetraPP Profil |
#1 · Zasláno: 23. 12. 2019, 10:27:33
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 |
#2 · Zasláno: 23. 12. 2019, 11:09:36
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 |
#3 · Zasláno: 23. 12. 2019, 11:18:36
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 |
#4 · Zasláno: 23. 12. 2019, 13:24:50
„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? |
||
Časová prodleva: 5 dní
|
|||
PetraPP Profil |
#5 · Zasláno: 28. 12. 2019, 12:21:26
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 |
#6 · Zasláno: 30. 12. 2019, 17:45:47
SELECT @@sql_mode případně SELECT @@GLOBAL.sql_mode; SELECT @@SESSION.sql_mode; |
||
Časová prodleva: 3 měsíce
|
|||
Rosik Profil |
#7 · Zasláno: 13. 4. 2020, 17:43:12
Mám stejný problém. Řešení v odpovědích není.
Mám např. tabulku "bazar", kde jsou 2 sloupce "kod" s datovým typem varachar(8) a "pocet" s datovým typem int(11). Na starém hostingu mi stačilo: INSERT INTO bazar ('kod','pocet') VALUES ('triko',''); k tomu, aby se do sloupce počet vložila nula. Nyní tam musím tu nulu napsat: INSERT INTO bazar ('kod','pocet') VALUES ('triko','0'); jinak to hlásí chybu: Incorrect integer value.... Na starém hostingu mám starší verzi MySQL 5.1.73 na novém už je MariaDB 10.3.17. Dá se to nějak obejít nebo musím tu nulu do těch dotazů psát? Pokud ano, je to trochu komplikované, protože, když mi vrátí webový formulář číselnou nulu, pak proměnou musím nastavit jako integer, aby se mi napsala do sql dotazu. Pokud to neudělám, pak se mi proměnná nevypíše jako nula, ale jako prázdný řetězec. Díky za doporučení! |
||
Ikki Profil |
#8 · Zasláno: 13. 4. 2020, 19:33:18
Dej si tam AUTO_INCREMENT na id. A příště zkus vlastní příspěvek ať je to lépe dohledatelne.
|
||
Rosik Profil |
#9 · Zasláno: 13. 4. 2020, 19:48:58
Ikki:
Ale můj příspěvek není o id a AUTO_INCREMENT, ale o běžné položce s číselnou hodnotou typu integer nebo float a reaguje na první příspěvek v tomto vlákně - upřesnění problému. |
||
Kajman Profil |
#10 · Zasláno: 13. 4. 2020, 19:58:03
Osobně bych dotazy opravil, ale mohlo by jít i nastavit přes sql_mode, aby to takové chyby ignorovalo. Jen si nejsem jistý, která volba to ovlivňuje.
|
||
Časová prodleva: 4 roky
|
0