Seznam věcí, které bych udělal jinak:
MEDIUMINT v MySQL je zvláštní kachna (3 bajty). Vyhnul bych se tomu, ale jinak to namapujte také na INTEGER.
MySQL BOOLEAN (jinak BOOL, alias TINYINT(1) ) není kompatibilní s typem pg boolean. Aplikace můžete nebo nemusíte přenášet v závislosti na tom, co používají jako booleovské literály. V MySQL se TRUE a FALSE mapují na 1 a 0 celočíselné hodnoty. Vypadá to, že typ pg BOOLEAN používá zápis řetězcového literálu. Aplikace tedy mohou nebo nemusí být přenosné – alespoň to není žádná náhrada.
Konečně, na posledním řádku ve vaší tabulce si myslím, že SQLite fráze by měla znít:
INTEGER PRIMARY KEY AUTOINCREMENT
To je zhruba ekvivalentní
BIGINT PRIMARY KEY AUTO_INCREMENT
v MySQL. V postgresu výsledkem datového typu SERIAL je sloupec INTEGER, což bude přibližně stejné jako u MySQL
INTEGER PRIMARY KEY AUTO_INCREMENT
Postgres má také typ BIGSERIAL, který je stejný jako SERIAL, ale místo typu INT má typ BIGINT.
Co mi uniklo:
Chybí mi INTEGER (alias INT) pro MySQL. Je srovnatelný s INTEGER na str. Velmi důležitá opomenutí:VARCHAR a CHAR. Sémanticky jsou VARCHAR v MySQL a PG a CHAR v MySQL a PG stejné, ale v MySQL mají tyto typy mnohem kratší maximální délku. V MySQL mohou mít tyto typy maximálně o něco méně než 64 kb, v pg 1 Gb (bajty). Specifikátor skutečné délky je vyjádřen v počtu znaků, takže pokud máte vícebajtovou znakovou sadu, musíte vydělit maximální délku maximálním počtem znaků, abyste získali teoretickou maximální délku specifikovanou pro tuto znakovou sadu. V SQLite mapují VARCHAR a CHAR oba na TEXT
Datové typy BIT v MySQL a PG mají zhruba stejnou sémantiku, ale v MySQL je maximální délka datového typu BIT 64 (bitů)
Myslím, že datový typ MySQL VARBINARY je nejlépe srovnatelný s datovým typem BYTEA PG. (ale typy BLOB MySQL se na to také mapují)
Typ FLOAT v MySQL by měl být ekvivalentní REAL v postgresu (a REAL také v SQLite) Typ DECIMAL v MySQL je ekvivalentní DECIMAL v postgresu, kromě toho, že v postgresu typ neklade libovolný limit na přesnost, zatímco v Maximální přesnost MySQL je (věřím) 70. (tj. 70 číselných pozic) Pro MySQL i Postgres je NUMERIC alias pro typ DECIMAL.