Portál AbcLinuxu, 12. května 2025 18:57
mysql> select cast(-1 as unsigned); +----------------------+ | cast(-1 as unsigned) | +----------------------+ | 18446744073709551615 | +----------------------+ 1 row in set (0.00 sec)
select cast(18446744073709551615 as signed );
sql_mode
na STRICT_ALL_TABLES
, Vám to řetězec neořízne.sql_mode
na NO_ZERO_IN_DATE
a NO_ZERO_DATE
žádné 0000-00-00 nebudou.sql_mode
= TRADITIONAL
.SET @@session.sql_mode = 'STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
(+ vypnu autocommit) - a to mně stačí a vyhovuje, ale pokud někomu vyhovuje něco jiného, nebo nechce [využívat tyto výhody TRADITIONAL
je jeho.long i = -1; unsigned long ui = (unsigned long) i;nebo-li C++:
long i = -1; unsigned long ui = static_cast<unsigned long>(i);Ad. každý si zvykne na "jinou mysql"
show create table
pg_dump
při formátu 't' nelze 2× udělat stejný soubor, při nezměněných datech či struktuře.SET @@session.sql_mode = TRADITIONAL
mu usnadní práci v MySQL a vyplatí se na nastavení prostředí se podívat, stojí to jen ½ hodiny.
Ad standard: podpora standardů je vlastnost veskrze dobrá. Např. proto, že že minimalizuje riziko chyb, protože při přechodu z jiné databáze vše funguje, jak má. Kromě toho to není věc, nad kterou by šlo "máchnout rukou", ukazuje to na kulturu a filosofii vývoje daného produktu. Není náhoda, že v mysql s její podporou standardů spousta věcí "funguje" (tzn. funguje jen za danýách podmínek a s danými omezeními), zatímco v postgresql funguje. (podotýkám, že zdaleka ne vše lze vyřešit konfigurací, např. zmatek kolem datetime typů a jejich defaultních hodnot).
Ano - neexistence unsigned v postgresu je nedostatek. Ano - ale v kolika projektech to vadí. Vzhledem k tomu, že existujou hotový extension, tak kdyby byla po tom typu poptávka, tak už je dávno přidanej. Navíc si troufnu tvrdit, že daleko víc lidí v reálu pracuje s IP adresama, než s datama, který jsou právě velký na signed, ale ještě dost malý na unsigned. Tadle nevýhoda je prostě podle mě naprosto nesouměřitelná s nedostatky mysql (níže). N
Nevím, jestli má další debata cenu, pokud myslíte, že jo, tak bych prosil o vyjádření, jaký důvod by člověk měl k použití mysql místo postgresu. Zatím jste dodal jeden snadno odstranitelný (unsigned int) a jeden, kde jde o styl práce (jestli definici tabulky získam z sql konzole nebo z commandline). Tak by mě zajímalo, jaké jiné důvody by měly být pro použití mysql. Protože pro použití postgresu je jich spousta, namátkou
- lepší podpora standardů (i po SET @@session.sql_mode = TRADITIONAL) - funkčnost triggerů a referenčních integrit - funkčnost fulltextu a transakcí - podpora CTE - podpora tabulek vracejících procedur - podpora funkčních indexů
atd... Řekněme, že jsem v pozici, kdy si vybírám databázi pro svůj nový projekt. Proč bych měl vybrat právě mysql? Důvodů, proč místo ní vzít postgresql jsem uvedl dost.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.