Ответ 1
Список вещей, которые я бы сделал по-другому:
MEDIUMINT в MySQL - нечетная утка (3 байта). Я бы избегал этого, но в противном случае также сопоставлял его с INTEGER.
MySQL BOOLEAN (псевдоним BOOL, псевдоним TINYINT (1)) несовместим с типом pg boolean. Вы можете или не сможете переносить приложения в зависимости от того, что они используют в качестве логических литералов. В MySQL, TRUE и FALSE отображают 1 и 0 целых значений. Похоже, что тип pg BOOLEAN использует строковое литерала. Таким образом, приложения могут быть или не быть переносимыми - по крайней мере, это не замена.
Наконец, для последней строки в вашем tabl я думаю, что фраза SQLite должна читать:
INTEGER PRIMARY KEY AUTOINCREMENT
Это примерно эквивалентно
BIGINT PRIMARY KEY AUTO_INCREMENT
в MySQL. В postgres тип данных SERIAL приводит к столбцу INTEGER, и это будет примерно так же, как MySQL
INTEGER PRIMARY KEY AUTO_INCREMENT
Postgres также имеет тип BIGSERIAL, который является таким же, как SERIAL, но с типом BIGINT вместо типа INT.
Что я пропустил:
Мне не хватает INTEGER (псевдоним INT) для MySQL. Это сопоставимо с INTEGER на стр. Очень важные упущения: VARCHAR и CHAR. Семантически, VARCHAR в MySQL и PG и CHAR в MySQL и PG те же, но в MySQL эти типы имеют гораздо меньшую максимальную длину. В MySQL эти типы могут иметь максимум немного меньше, чем 64kb, в pg 1Gb (байты). Фактический спецификатор длины выражается в количестве символов, поэтому, если у вас есть многобайтовый набор символов, вы должны разделить максимальную длину на максимальное количество символов, чтобы получить теоретическую максимальную длину, указанную для этого набора символов. В SQLite, VARCHAR и CHAR отобразите оба значения в TEXT
Типы данных BIT в MySQL и PG имеют примерно одну и ту же семантику, но в MySQL максимальная длина типа данных BIT равна 64 (бит)
Я думаю, что тип данных MySQL VARBINARY лучше всего сопоставляется с типом данных PG BYTEA. (но на самом деле MySQL BLOB-типы также сопоставляются с этим)
Тип FLOAT в MySQL должен быть эквивалентен REAL в postgres (и REAL в SQLite тоже) Тип DECIMAL в MySQL эквивалентен DECIMAL в postgres, за исключением того, что в postgres тип не налагает произвольный предел точности, тогда как в MySQL максимальная точность (я считаю) 70. (то есть 70 позиций позиций) Для MySQL и Postgres NUMERIC является псевдонимом для типа DECIMAL.