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以外の最近の投稿

    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 2016

    Popular entries 2015

    Popular entries 2014