GNU/Linux >> Znalost Linux >  >> Linux

Chyba Mysql datetime DEFAULT CURRENT_TIMESTAMP

pokud chcete nastavit výchozí čas na, musíte se změnit na timestamp ve vašem datovém typu,

datetime bude zobrazovat uživatelský vstup tabulky...

http://dev.mysql.com/doc/refman/5.0/en/timestamp-initialization.html

http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.html


Jako DEFAULT CURRENT_TIMESTAMP otázka je již zodpovězena, odpovím pouze na nesoulad v rozlišení velkých a malých písmen v názvech tabulek mezi windows a linuxem.

Ve Windows se v souborových systémech ve výchozím nastavení nerozlišují velká a malá písmena.
Ale na Linuxu a dalších *NIX, jako jsou operační systémy, jsou ve výchozím nastavení rozlišována velká a malá písmena.

Důvodem, proč zde dochází k nesouladu v chování, je souborový systém, protože každá tabulka je vytvořena jako samostatný soubor a souborový systém za vás rozlišuje malá a velká písmena.

MySQL má parametr, který toto chování přepíše:

Například na Unixu můžete mít dvě různé tabulky s názvem my_table a MY_TABLE , ale v systému Windows jsou tato dvě jména považována za identická. Chcete-li se vyhnout problémům s přenosem dat způsobeným velkými písmeny v názvech databází nebo tabulek, máte dvě možnosti:

  • Použijte lower_case_table_names=1 na všech systémech. Hlavní nevýhodou je, že když použijete SHOW TABLES nebo SHOW DATABASES , nevidíte jména v původních písmenech.

  • Použijte lower_case_table_names=0 na Unix a lower_case_table_names=2 na Windows. Tím se zachová velikost písmen v názvech databází a tabulek. Nevýhodou je, že musíte zajistit, aby vaše příkazy vždy odkazovaly na názvy vaší databáze a tabulek se správnými písmeny ve Windows. Pokud přenesete své příkazy do Unixu, kde jsou velká písmena významná, nefungují, pokud jsou písmena nesprávná.

    Výjimka: Pokud používáte tabulky InnoDB a snažíte se těmto problémům s přenosem dat vyhnout, měli byste nastavit lower_case_table_names=1 na všech platformách vynutit převod jmen na malá písmena.

[...]
Abyste předešli problémům způsobeným takovými rozdíly,je nejlepší přijmout konzistentní konvenci, jako je vždy vytvářet databáze a tabulky a odkazovat na ně pomocí malých názvů . Tato konvence se doporučuje pro maximální přenositelnost a snadné použití.

Toto je výňatek z manuálu MySQL o rozlišování malých a velkých písmen v identifikátorech


DEFAULT CURRENT_TIMESTAMP podpora pro DATETIME (datatype) byl přidán do MySQL 5.6.

Ve verzi 5.5 a dřívějších verzích to platilo pouze pro TIMESTAMP (datový typ).

Je možné použít BEFORE INSERT spusťte v 5.5 pro přiřazení výchozí hodnoty sloupci.

 DELIMITER $$

 CREATE TRIGGER ...
 BEFORE INSERT ON mytable
 FOR EACH ROW
 BEGIN
    IF NEW.mycol IS NULL THEN
       SET NEW.mycol = NOW();
    END IF;
 END$$

Rozlišování malých a velkých písmen (dotazů na hodnoty uložené ve sloupcích) je způsobeno collation použitý pro sloupec. Porovnání končící na _ci nerozlišují malá a velká písmena. Například latin1_swedish_ci nerozlišuje malá a velká písmena, ale latin1_general_cs rozlišuje velká a malá písmena.

Výstup z SHOW CREATE TABLE foo zobrazí znakovou sadu a řazení pro sloupce typu znaků. Toto je specifikováno na úrovni jednotlivých sloupců. "Výchozí" zadaná na úrovni tabulky platí pro nové sloupce přidané do tabulky, pokud nová definice sloupce neurčuje znakovou sadu.

AKTUALIZACE

Kaii poukázal na to, že moje odpověď týkající se „rozlišování malých a velkých písmen“ se zabývá hodnotami uloženými ve sloupcích a tím, zda dotazy vrátí hodnotu ze sloupce obsahujícího hodnotu "New" bude vráceno s predikátem jako "t.col = 'new'" .

Viz odpověď Kaii ohledně identifikátorů (např. názvy tabulek) jsou ve Windows zpracovávány jinak (ve výchozím nastavení) než v Linuxu.


Linux
  1. Tabulka chyb MySQL „mysql.servers“ neexistuje

  2. Základy PHP a MySQL:Databáze a tabulky

  3. MySQL - CHYBA 1045 - Přístup odepřen

  1. Nelze se připojit k serveru MySQL, chyba 111

  2. Závažná chyba:Nelze otevřít a zamknout tabulky oprávnění:Tabulka 'mysql.host' neexistuje

  3. zkrátit tabulku pomocí příkazového řádku v Linuxu

  1. Řešení chyby Mysql:Příliš mnoho otevřených souborů

  2. Je ve výchozím nastavení nainstalován server MySQL?

  3. V názvech tabulek MySQL rozlišují malá a velká písmena v Linuxu