sql >> Databáze >  >> RDS >> Mysql

VARCHAR(4) s uložením více znaků než čtyř

Pokud děláte toto:

  1. Vytvořte nebo načtěte objekt $o .
  2. Přiřadit '12345' na příslušnou vlastnost/sloupec.
  3. Uložte $o a nechat MySQL zkrátit hodnotu na '1234' .
  4. Přístup k vlastnosti/sloupci v $o a získejte '12345' zpět.

pak vidíte jeden z problémů, když necháte svou databázi tiše manipulovat s vašimi daty.

Uložení je úspěšné, váš objekt netuší, že MySQL zkrátila data, takže si ponechává '12345' místo opětovného načtení tohoto sloupce z databáze a máte nekonzistentní data.

Pokud jste odkázáni na to, že MySQL tiše zkracuje vaše data, budete pravděpodobně muset udělat toto:

  1. Vytvořte/načtěte svůj objekt.
  2. Aktualizoval vlastnosti.
  3. Uložte objekt.
  4. Zahoďte místní odkaz na objekt.
  5. Načtěte jej znovu z databáze, abyste se ujistili, že získáte skutečný hodnoty.

Doporučil bych přidat k vašim objektům přísné ověřování, abyste se vyhnuli tichému zkrácení uvnitř MySQL. Zapínání přísného režimu by se také tomuto problému vyhnulo, ale pak byste museli zkontrolovat a zpřísnit veškeré zpracování chyb a ověřování dat (což by ve skutečnosti nebylo špatné).




  1. uložit více hodnot zaškrtávacích polí do databáze pomocí php a mysql

  2. Jak MySQL zpracovává ORDER BY a LIMIT v dotazu?

  3. Proč ORACLE nepovoluje po sobě jdoucí znaky nového řádku v příkazech?

  4. V Oracle AS alias nefunguje