今まで Wordpress を MySQL で運用していましたが今回 postgres に変更したいです。
pgloader を使って一旦 MySQL を postgreSQL に移行しましたが、wordpress でpostgreSQL に接続するにはどうすれば良いのでしょうか?
参照 ← この様に pg4wp というプラグインを使って使用することが可能な様ですがこちらは wordpress をインストールする段階で postgres にする方法の様です。実際にこの通りに行うと wordpress のサイトにアクセスした際に install.php にリダイレクトしようとします。しかし当然もう wordpress はインストール済みで以前 install.php も削除してしまっているためエラーとなります。
どの様にすれば mySQL から postgres に移行できるのでしょうか? 再度 install.php を追加して wordpress の再インストールをするしかないのでしょうか?
ーーーーーー追記ーーーーーー
再度 install.php を追加して 際インストールを行ったところテーマやプラグインはとってこられている様ですが記事が表示されないのと管理画面が表示されません。 DB の方を確認したところ wp_posts には記事の情報が存在しているため問題なく DB 移行できていると思うのですが、なぜ取ってくる事ができていないのでしょうか? debug 方法などありますか?
サーバーのログを確認した所以下の様なエラーがいくつか出ていました。column "ID" does not exist の様に出ていますが、という事は MySQL → postgres の移行で失敗しているのでしょうか?
2020-12-29T06:21:44.250912+00:00 app[web.1]: [29-Dec-2020 06:21:44 UTC] PHP Warning: pg_query(): Query failed: ERROR: column "ID" does not exist
2020-12-29T06:21:44.251219+00:00 app[web.1]: LINE 1: ...r, EXTRACT(MONTH FROM post_date) AS month, count( "ID" ) as ...
2020-12-29T06:21:44.251616+00:00 app[web.1]: ^ in /app/wp-content/pg4wp/driver_pgsql.php on line 139
2020-12-29T06:21:44.251962+00:00 app[web.1]: [29-Dec-2020 06:21:44 UTC] WordPress データベースエラー: ERROR: column "ID" does not exist
2020-12-29T06:21:44.252228+00:00 app[web.1]: LINE 1: ...r, EXTRACT(MONTH FROM post_date) AS month, count( "ID" ) as ...
2020-12-29T06:21:44.254016+00:00 app[web.1]: ^ for query SELECT YEAR(post_date) AS year
, MONTH(post_date) AS month
, count(ID) as posts FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC made by require('wp-blog-header.php'), require_once('wp-includes/template-loader.php'), include('/themes/luxeritas/home.php'), thk_call_sidebar, apply_filters('thk_sidebar'), WP_Hook->apply_filters, {closure}, get_sidebar, locate_template, load_template, require_once('/themes/luxeritas/sidebar.php'), dynamic_sidebar, WP_Widget->display_callback, WP_Widget_Archives->widget, wp_get_archives
さらにデータベースのスキーマを確認した所 MySQL では wp_posts のカラム名が ID なのに対し postgres の方は小文字の id でした。下記で無理やりカラム名を変えようと思ったのですが
SQL
1ALTER TABLE wp_posts RENAME column id to ID;
ERROR: column "id" of relation "wp_posts" already exists
となり、既にデータがあるためか変更できませんでした。何か解決策はありますでしょうか?
ーーーーーー追記
上記 postgres は大文字と小文字を区別しない?仕様なのかそのため id という列が既に存在するという事になった様です。。ではその場合 driver_pgsql.php の方を変更しなくてはならないのでしょうか
あなたの回答
tips
プレビュー