abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 14:44 | Nová verze

    V programovacím jazyce Go naprogramovaná webová aplikace pro spolupráci na zdrojových kódech pomocí gitu Forgejo byla vydána ve verzi 14.0 (Mastodon). Forgejo je fork Gitei.

    Ladislav Hagara | Komentářů: 2
    dnes 13:11 | Zajímavý projekt

    Just the Browser je projekt, 'který vám pomůže v internetovém prohlížeči deaktivovat funkce umělé inteligence, telemetrii, sponzorovaný obsah, integraci produktů a další nepříjemnosti' (repozitář na GitHubu). Využívá k tomu skrytá nastavení ve webových prohlížečích, určená původně pro firmy a organizace ('enterprise policies'). Pod linuxem je skriptem pro automatickou úpravu nastavení prozatím podporován pouze prohlížeč Firefox.

    NUKE GAZA! 🎆 | Komentářů: 2
    včera 16:44 | Nová verze

    Svobodný multiplatformní herní engine Bevy napsaný v Rustu byl vydán ve verzi 0.18. Díky 174 přispěvatelům.

    Ladislav Hagara | Komentářů: 2
    včera 15:11 | IT novinky

    Miliardy korun na digitalizaci služeb státu nestačily. Stát do ní v letech 2020 až 2024 vložil víc než 50 miliard korun, ale původní cíl se nepodařilo splnit. Od loňského února měly být služby státu plně digitalizované a občané měli mít právo komunikovat se státem digitálně. Do tohoto data se povedlo plně digitalizovat 18 procent agendových služeb státu. Dnes to uvedl Nejvyšší kontrolní úřad (NKÚ) v souhrnné zprávě o stavu digitalizace v Česku. Zpráva vychází z výsledků víc než 50 kontrol, které NKÚ v posledních pěti letech v tomto oboru uskutečnil.

    Ladislav Hagara | Komentářů: 13
    včera 13:55 | IT novinky

    Nadace Wikimedia, která je provozovatelem internetové encyklopedie Wikipedia, oznámila u příležitosti 25. výročí vzniku encyklopedie nové licenční dohody s firmami vyvíjejícími umělou inteligenci (AI). Mezi partnery encyklopedie tak nově patří Microsoft, Amazon a Meta Platforms, ale také start-up Perplexity a francouzská společnost Mistral AI. Wikimedia má podobnou dohodu od roku 2022 také se společností Google ze skupiny

    … více »
    Ladislav Hagara | Komentářů: 0
    včera 02:22 | Nová verze

    D7VK byl vydán ve verzi 1.2. Jedná se o fork DXVK implementující překlad volání Direct3D 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.

    Ladislav Hagara | Komentářů: 0
    včera 02:00 | Nová verze

    Byla vydána verze 12.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 12.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    15.1. 19:22 | Humor

    CreepyLink.com je nový zkracovač URL adres, 'díky kterému budou vaše odkazy vypadat tak podezřele, jak je to jen možné'. Například odkaz na abclinuxu.cz tento zkracovač převádí do podoby 'https://netflix.web-safe.link/logger_8oIlgs_free_money.php'. Dle prohlášení autora je CreepyLink alternativou ke zkracovači ShadyURL (repozitář na githubu), který dnes již bohužel není v provozu.

    NUKE GAZA! 🎆 | Komentářů: 3
    15.1. 12:33 | IT novinky

    Na blogu Raspberry Pi byla představena rozšiřující deska Raspberry Pi AI HAT+ 2 s akcelerátorem Hailo-10 a 8 GB RAM. Na rozdíl od předchozí Raspberry Pi AI HAT+ podporuje generativní AI. Cena desky je 130 dolarů.

    Ladislav Hagara | Komentářů: 3
    15.1. 12:11 | Komunita

    Wikipedie slaví 25. výročí svého založení. Vznikla 15. ledna 2001 jako doplňkový projekt k dnes již neexistující encyklopedii Nupedia. Doména wikipedia.org byla zaregistrována 12. ledna 2001. Zítra proběhne v Praze Večer svobodné kultury, který pořádá spolek Wikimedia ČR.

    Ladislav Hagara | Komentářů: 1
    Které desktopové prostředí na Linuxu používáte?
     (14%)
     (5%)
     (0%)
     (9%)
     (20%)
     (3%)
     (6%)
     (3%)
     (11%)
     (42%)
    Celkem 473 hlasů
     Komentářů: 12, poslední 14.1. 21:12
    Rozcestník

    Dotaz: Mysql problem s cizim klicem

    1.3.2012 13:46 Stoupa
    Mysql problem s cizim klicem
    Přečteno: 934×
    Zdravim, mam tabulky v databazi
    CREATE TABLE `komentare` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_ukolu` int(11) DEFAULT NULL,
      `id_projektu` int(11) DEFAULT NULL,
      `id_uzivatele` int(11) NOT NULL,
      `popis` text COLLATE utf8mb4_czech_ci NOT NULL,
      `datum` datetime NOT NULL,
      `zmena` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
      PRIMARY KEY (`id`),
      KEY `id_ukolu` (`id_ukolu`),
      KEY `id_uzivatele` (`id_uzivatele`),
      KEY `id_projektu` (`id_projektu`),
      CONSTRAINT `komentare_ibfk_4` FOREIGN KEY (`id_projektu`) REFERENCES `projekty` (`id`),
      CONSTRAINT `komentare_ibfk_1` FOREIGN KEY (`id_uzivatele`) REFERENCES `uzivatele` (`uid`) ON DELETE CASCADE,
      CONSTRAINT `komentare_ibfk_2` FOREIGN KEY (`id_ukolu`) REFERENCES `ukoly` (`id`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;
    
    CREATE TABLE `projekty` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `vedouci` int(11) NOT NULL,
      `nazev` varchar(30) COLLATE utf8mb4_czech_ci NOT NULL,
      `popis` text COLLATE utf8mb4_czech_ci NOT NULL,
      `zacatek` date NOT NULL,
      `konec` date NOT NULL,
      `hotovo` tinyint(1) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      KEY `vedouci` (`vedouci`),
      CONSTRAINT `projekty_ibfk_2` FOREIGN KEY (`vedouci`) REFERENCES `uzivatele` (`uid`) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;
    
    CREATE TABLE `ukoly` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `id_projektu` int(11) NOT NULL,
      `nazev` varchar(30) COLLATE utf8mb4_czech_ci NOT NULL,
      `popis` text COLLATE utf8mb4_czech_ci NOT NULL,
      `zacatek` date NOT NULL,
      `konec` date NOT NULL,
      `hotovo` tinyint(1) NOT NULL DEFAULT '0',
      `id_predka` int(11) NOT NULL DEFAULT '0',
      PRIMARY KEY (`id`),
      KEY `id_projektu` (`id_projektu`),
      CONSTRAINT `ukoly_ibfk_1` FOREIGN KEY (`id_projektu`) REFERENCES `projekty` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_czech_ci;
      
    Kde tabulka komentare ma dva cizi klice id_projektu a id_ukolu. Ovsem pri pridavani komentare do databaze prikazem

    insert into komentare values('','','','1','asfas','2012-02-28 07:28:00','')

    dostavam chybu

    Chyba v dotazu: Cannot add or update a child row: a foreign key constraint fails (`bakp_db`.`komentare`, CONSTRAINT `komentare_ibfk_2` FOREIGN KEY (`id_ukolu`) REFERENCES `ukoly` (`id`) ON DELETE CASCADE)

    Nevite nekdo kde by mohl byt problem? Co jsem procital internet tak jsem narazil na vyroky, ze cizi klic muze byt nabyvat hodnoty null.

    Řešení dotazu:


    Odpovědi

    1.3.2012 14:19 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Vy tam nevkládáte NULL, ale prázdný řetězec. MySQL to kupodivu povolí a asi jej převede na nějaké číslo. Předpokládám, že jste chtěl spíš provést
    INSERT INTO komentare (id, id_ukolu, id_projektu, id_uzivatele, popis, datum, zmena)
      VALUES (DEFAULT, NULL, NULL, 1, 'asfas', '2012-02-28 07:28:00', DEFAULT)
    
    nebo
    INSERT INTO komentare (id_uzivatele, popis, datum)
      VALUES (NULL, NULL, 1, 'asfas', '2012-02-28 07:28:00')
    
    když už tam máte nadefinované ty výchozí hodnoty.

    Jinak nechápu, proč se tam všude snažíte nacpat řetězce, když to mají být čísla. Výchozí hodnota pro sloupec zmena taky vypadá dost podivně a s velkou pravděpodobností by tam spíš mělo být NULL.
    1.3.2012 15:39 Stoupa
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Dekuji moc mi to pomohlo.
    2.3.2012 09:23 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Doplnění ke konverzi:
    Implicitní konverze textu na číslo zařídí, že nečíselný řetězec (respektive neobsahující zleva nějakou číselnou reprezentaci) je nula - tedy i prázdný řetězec.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    2.3.2012 09:48 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Abych předešel další debatě o implicitní konverzi :-).
    Je to dle nastavení serveru, případně dle nastaveni uživatelského(session) sql_mode, pokud je nastavení takové, jak bylo vždy u MySql zvykem,tedy ne-striktní--volné, tak je při konverzi na číslo z hodnot '' nebo 'kuk' nebo '1kuk' vyvolán jen warning (v prvních dvou případech 1366, tedy nekorektní hodnota, v posledním případě 1265, tedy ořezání dat.)
    Pokud je nastaven rozumnější režim (například pomocí: set @@session.sql_mode='STRICT_ALL_TABLES';), tak jsou všechna tato varování již chybami (stávající nastavení lze zjisti přes select @@sql_mode;).
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    1.3.2012 17:14 Kit
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Častou chybou je chybná práce s timestampem. Chybně:
    insert into komentare values('','','','1','asfas','2012-02-28 07:28:00','');
    lépe:
    insert into komentare values('','','','1','asfas',now(),'');
    Nejlépe asi funguje datový typ timestamp, který se aktualizuje při každé změně záznamu. Ovšem i to je potřeba si řádně rozmyslet, protože vždy to vhodné není.

    Je možné, že podobná programátorská chyba způsobila včerejší nefunkčnost systému na vydávání občanských průkazů. SQL databáze takové chyby už dlouho nedělají.
    2.3.2012 08:19 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Pak by se hodilo mít now() jako default pro daný sloupec, případně ho rovnou plnit nějakým triggerem a zakázat jeho změnu. Ale nevím, co z toho je řešitelné v MySQL.
    2.3.2012 08:58 Kit
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Tohle funguje:
    create table pruchod(jmeno varchar(255), created TIMESTAMP DEFAULT NOW());
    Po updatu sloupce jmeno se created nezmění.
    2.3.2012 09:10 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Jistě, nemyslel jsem si, že je na tom MySQL zas tak špatně :-) Šlo mi spíš o to, aby tu hodnotu nebylo možné při insertu nastavit na jinou nebo updatem změnit. Ale na takhle silné kontroly na straně databáze si uživatelé MySQL zpravidla nehrají.
    2.3.2012 09:31 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Definice sloupce v MySQL (bo nelze použít fce v default při create table):

    Iniciliazicae na NOW() a při každém UPDATE nastavení na NOW()
    `name_changedat` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
    nebo
    `name_changedat` TIMESTAMP;

    Jen iniciliazicae na NOW()
    `name_createdat` TIMESTAMP DEFAULT CURRENT_TIMESTAMP

    Jen UPDATE na NOW() (ale funkční to bude jen tehdy je-li povoleno NO_ZERO_DATE)
    `name_createdat` 0 ON UPDATE CURRENT_TIMESTAMP

    (samozřejmě platí, že nějaký sloupec musí být změněn, tj. musí dojít ke změně nějaké hodnoty řádku)

    Ovšem jak při insert, tak i u update lze hodnotu explicitně přepsat.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    2.3.2012 09:57 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Aha, beru zpět na základě příspěvku a odzkoušení, že nelze použít funkce, evidentně alespoň NOW() funguje.
    Ale pomoci update lze hodnotu přepsat, aby to nebylo možné, musel by se použít trigger.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    2.3.2012 09:47 Kit
    Rozbalit Rozbalit vše Re: Mysql problem s cizim klicem
    Dá se využít GRANT a pohledy, ale na to si uživatelé MySQL zpravidla nehrají.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.