PostgreSQLからMySQLへマイグレーション。そしてハマるw

2017-03-10   

t9ef3y7NO_w7lodP.jpg

このREDPEPPERSは某高額専用サーバー(を間借りして)動かしてました。が、諸事情により低額共有サーバーに引越しすることに。低額ってもサーバー性能的にはかなり良いです。たまに一発目のレスポンスが遅い時がある感じだけど画像の送信とかはだいぶ速い!ちなみにHETEMLっていうレンタルサーバーです。

でREDPEPPERSは20年前から動いてるサイトなのでなんとなく当時の流れでDBはPostgresでした。けど、いつの間にやら世の中はMySQLな時代になってた。HETEMLもMySQLです。

サーバー移転は何度も行ってきたけどDBのマイグレーションは過去に1~2回しか経験なし。だって面倒なんだもん。

でも、そんなことも言ってられないので重い腰を上げて実行することに(-ω☆)

今後のマイ備忘メモ的にここに書いておきます。

まずはDB/テーブルのコピー

参考 PostgreSQLのデータをMySQLに移行する - Qiita

$ pg_dump --data-only --no-owner --no-privileges --disable-dollar-quoting DB名 > /var/tmp/ファイル名
$ pg_dump --schema-only --no-owner --no-privileges --disable-dollar-quoting DB名 > /var/tmp/ファイル名

参考ページのスクリプトは動かず(´・ω・`)

なのでスキーマのファイルを開いてphpMyAdminのSQLにコピペ生打ち。

データのコピーもphpMyAdminのインポート機能で。HTMLソースはタグのダブルクォーテーション周りでハマるので注意。EXCELのCSV書き出しで発狂しないように←

PHP周り pg_をmysql_に一発置換

1.Dreamweaverの置換機能でpg_をmysql_にサイトごと変換!

2.pg_exec($con,$sql)はハマる。pg_query($sql)に一発変換!

SQL周り Offsetでハマる

MySQLにはSQLのoffsetが存在しない

Postgres : offset 開始位置 limit 件数 → MySQL limit 件数,開始位置 になる

SQL周り 日付関数がまーまー違う

代表例 Postgres: date_part('Y',日付) → MySQL YEAR(日付)

「オレの釣り」とかでよく使うやつ

Postgres:select * from table where date >= date('$theday') - 379 and date(date) < date('$theday') - 351 

MySQL:select * from table where  date between (date('$theday') - interval 379 day) and (date('$theday') - interval 351 day)

日付まわりはPostgresもバージョンごとにだいぶ違う気がする。intervalを使ったこともあるな。

SQL周り MySQLはinsertに厳しい

insert valueに全カラム入れないとダメっぽい(""やnullで)。Postgresは10カラムあっても冒頭の1個だけあれば通る気がする。

なによりもphpMyAdminが神!

phpMyAdminは本当にすげーわぁ。めっちゃ親切。こんなユーザーに優しいシステムはちょっと見たことないくらい親切丁寧。アプリの鏡です。MySQLド素人のオレでもすごく簡単に使える。SSHのpsqlでコマンド入れるのアホらしくなるし、phpPgAdminの不親切さが腹立たしいw

その他・将来のオレへ

DBと関係ないけどサーバーが変わると各地で使うパスが変わりまくるので個々のスクリプト内にいちいち絶対パスを記入しないこと!同じくmysql_connectも。一つのconfigファイルに留めるべし。って頭ではわかっているけど面倒でついつい書いちゃうのよねぇ。そしてサーバー移転時に後悔するw

HETEMLで403エラーがよくでる

HETEMLのWAF(Webアプリケーションファイアウォール)をONにしてるとブログ書くプログラムでやたら403エラーが出る。この記事のように本文にSQL文書いたり、ツィッターをembedするとソースにscriptって入るからSQLインジェクションだのクロスサイトスクリプティングだのに引っかかるw

HETEML管理画面のWAFのログみて「.htaccessによる除外記述」をいちいち設定しないとダメ。これがけっこうメンドう・・・けどWAFのオフは怖い。

カテゴリ:日記・携帯更新

UNITORO以外の最近の投稿

N/A

twitter

Recent entries

UsjLShusJKcsCBly.jpg

シーズンイン準備1:スピナーベイトのリペア

Bac6zGXEVCCj6GzU.jpg

VWアルテオン

Usn4EBJ1gUO067tS.jpg

小型ミノー用にベイトフィネスロッドをゲット

9s6ab5Ss_9WJyq89.jpg

iPhoneにメール送ってスケジュール帳(カレンダーアプリ)と連動させるやつ

DVR4YHqDvhTLK2oP.jpg

クルマにネコを乗せるのは法律で禁止してほしい

vF4vzEWEfJMBTKFQ.jpg

ローランスのシステムアップデートが失敗する

UjLtI_K5pJuwogEY.jpg

Lowrance Elite Ti バージョン2.5にしてみた

kTEwpcisVgd5mOtS.jpg

神サイト!世界中の通販荷物をトラックできる「17TRACK」が凄い便利

dVR3m0nI42URxrHX.jpg

Amazonプラムミュージックもスマホ・タブレットにダウンロードが可能だった

z9nb4KrDOe6zlBwR.jpg

ゴルフ7ネタ 『過走行ツラっ。タイヤ1年経たず交換する決意』

3joSWCLO4Gd5QHZm.jpg

20年WEBに関わってるオレが未だにNo1だと思う凄いサービス「アキネーター」

d3unfekAHQ3Loyl1.jpg

リンクされている文字の一部を一発でコピーする方法

iMSwzh89CW4vDOw1.jpg

Lowrance Elite-7TiをGoFree Wi-fiでau Qua Tab PX LGT31に繋いでみた

iwvaYo5kZgagie7l.jpg

オレのちょい古ダイワリール達

NEg0XPNL2fKPsd8D.jpg

小ネタ日記

96LSVUSLsI9bpV8C.jpg

防水タブレットau Qua Tab PX LGT31を買ってみた

egBeqfNZ2dFCVBB7.jpg

八郎湖の水質と水質汚濁機構の解析

FDYKUpUIadp8O6wN.jpg

2017ダイワ「セオリー」ネタと見せかけて簡易スタジオボックスネタ

315ZiSu_eMsv8aUI.jpg

VWゴルフのACC(アダプティブクルーズコントロール)を使いまくった感想

LNOZsdBsozFuBKN8.jpg

はやり目(ウイルス性急性結膜炎)とかいう病気になった(*´ω`*)

21AHIAK9yAYuZaEa.jpg

CKEditor4.5をiPhoneで快適に使う方法

E5_nlzKrjGaesyYH.jpg

Windows7のCドライブが100%になるトラブル

fRCuQMu7B7G2j5r4.jpg

ローランスHDS3・Tiでついにリアルタイム等深線マップ作成が可能に!?

uF4GDnWEslXvgOD7.jpg

B.A.S.Sエリート第1戦ウィニングルアー

picture from keitai

バレンタインスペシャル

3g_4ErKJATHUKh1n.jpg

2017年のJBTOP50はボートが3種類必要

l2N0atqBA5GYK8L4.jpg

釣り道具をアメリカから輸入したときの関税について

uZHPQ2sq8peb1soI.jpg

久々にダラダラと駄文を書いてみる

SEdbip8SZMwsy8ZJ.jpg

「文字小さくておっさん泣かせ」スマホサイトの最適な文字サイズは?

2016シーズン榛名湖バス釣りオレなりのまとめ7月~11月編

Category

Popular entries 2018

Popular entries 2017

Popular entries 2016