Перенос БД с MySQL на Postgresql
Как то уже описывал в одном из постов, что в одной из инсталяций внедрял WordPress на основе БД PostreeSQL. И в принципе спустя год могу сказать что особых проблем пока не возникло. Кроме одного НО! Если требуется какой-то установить плагин, то чаще всего он просто так, без некоторой адаптации не заработает. Вот сейчас адаптирую плагин «WP Voting Contest Lite«, который можно использовать для «выбора лучшего фото» пользователями.
В данном случае столкнулся для начала с проблемой его установки. При активации он пытается создать, если отсутствуют таблицы:
- wp_votes_tbl
- wp_votes_post_contestant_track
- wp_votes_custom_registeration_contestant
- wp_votes_custom_field_contestant
В которых встречается имеющийся в MySQL, но отсутствующий в PostgreSQL тип ENUM. Ну чтож.. создадим эти типы «руками», благо такая возможность в PostgreSQL предусмотрена:
1 2 3 4 5 6 7 8 |
CREATE TYPE public.admin_only_enum AS ENUM ('Y','N'); CREATE TYPE public.grid_only_enum AS ENUM ('Y','N'); CREATE TYPE public.list_only_enum AS ENUM ('Y','N'); CREATE TYPE public.pretty_view_enum AS ENUM ('Y','N'); CREATE TYPE public.question_type_enum AS ENUM ('TEXT','TEXTAREA','MULTIPLE','SINGLE','DROPDOWN','FILE','DATE'); CREATE TYPE public.required_enum AS ENUM ('Y','N'); CREATE TYPE public.set_limit_enum AS ENUM ('Y','N'); CREATE TYPE public.show_labels_enum AS ENUM ('Y','N'); |
И далее создать таблицы по типу:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
CREATE TABLE public.wp_votes_custom_registeration_contestant ( id bigserial NOT NULL, "sequence" int4 NULL, question_type public.question_type_enum NULL, question text NULL, system_name varchar(45) NULL, response text NULL, required public.required_enum NULL, required_text text NULL, admin_only public.admin_only_enum NULL, delete_time varchar(45) NULL, react_val text NULL, wp_user int4 NULL, CONSTRAINT wp_votes_custom_registeration_contestant_pk PRIMARY KEY (id) ); |