Перенос БД с 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) ); | 


