FC2ブログ

スマフォのアプリを作りたい(24):サーバ側の仕掛けを作る①

   プログラミング [2020/05/13]
スマフォだけで全て完結するシステムって言うのはなかなかねー。
一人だけで使うアプリならありそうだけど・・・
複数の人で、データを共有したいとなったら、当然間を取り持つサーバーが必要になります。

今回作っているアプリも基本、チャットの機能だし。
さらに、データが蓄積させたり、利用内容が高度になれば、DBも必要です。

なので、DBを使ったシステムということで、その動作環境とサーバ側アプリ(スクリプト)を作成します。


ちょっとだけやったことがある言語と言えば
・ASP(古い。その実VB)
・PHP(これも古いが最近も使った)
・Perl(もう懲り懲り)

既にEclipseの環境があるので当然PHPを選びました。
DBはMySQLです。

始めます。


◆プロジェクトの作成
この辺の手順は、以前の備忘録Eclipse-PHP環境でちょっとハマった辺りが何かの足しになるかもしれません。そちらを参考にされてください。

ともかくPHPのプロジェクトを新しく作ります。
ソースはまだ何も入ってません。


◆DBの作成
参考:https://blog.goo.ne.jp/xmldtp/e/8cf1d195d8f18661884b7c1c90cca0c4
1)Eclipseのメニューから
-[ウィンドウ]-[パースペクティブを開く]-[その他]を選択
-続けて、「パースペクティブを開く」ウィンドウで、[データベース開発]を選択
-Eclipse画面の左側が、「データ・ソース・エクスプローラー」に変わります。
2)データベース接続
-「データ・ソース・エクスプローラー」の[データベース接続]を右クリックして
-プルダウンから[新規]を選択
-「新規接続プロファイル」上のリストから「MySQL」を選択して[次へ]をクリック


-ファイル選択ダイアログでJDBCを指定?・・・

あれ?こんなに面倒くさかったかしら。
以前にもDBの作成はやってみたことがあったはずなのに、全くこの手順に馴染みがありません。

・・・


かなり昔の備忘録を
・さるもすなるHP:●PHP-はじめの半歩
・このブログ:PHP-はじめの一歩(その2)Eclipseインストール
漁ってみました。(10年も前のメモだったんですね。色々あったよなー・・・って郷愁に浸ってる場合ではありません。)

当時DBを使ったものは作りませんでしたが、
たしか、xamppの環境設定の中にDBを作成する機能が含まれていたような・・・。
ブラウザ上の操作で作れたような気がします。


やっぱりありました。

Eclipse 4.7 Oxygenのpleiades:ありありのセット。
1)Eclipse環境の中に含まれる「XAMPP Control Panel」を起動します。
 (Eclipseインストール先)\plaiades\xampp\xampp-control.exe
2)ApacheとMySqlをそれぞれ起動します。
3)ブラウザで、「http://localhost」をブラウズします。
4)表示されたXamppのWelcomeページの右上の「phpMyAdmin」メニューを選択
-右側メインの表示エリアの上の方の「データベース」タブを選択
-「データベース名」を入力して、(作成)ボタンをクリック
-「名前」にテーブル名を入力して、必要なカラム数を指定し、(実行)ボタンをクリック
-カラム設定画面になります。
以降は適当に使ってみてください。

-画面右側に作成したDBとその下にテーブルが表示されているはずです。
 新規にテーブルを追加する場合は、「New」をクリックします。

ほとんどマニュアル的なものは見ないでも使えた。
ちょっと分かり難い部分は以下に補足します。

-補足:ForeignKeyの指定-
「phpMyAdmin」でのForeignKeyの指定の仕方が分かり難かったので説明します。
-左側リストから対象のテーブル名をクリックします。
-右側上部のタブメニューから「構造」タブを選択します。
-タブ表示内上部に[テーブルの構造]と(Relation view)ボタンが並んでいるので(Relation view)をクリック
-「Foreign key constraints」と書かれた枠内でForeignKeyを設定します。
 -「Contstraint name」と書かれた入力欄はこの設定につける名前です。未入力でも可
  「ON DELETE」「ON UPDATE」は希望に応じて指定
 -「カラム(?)」と書かれた列の枠に指定するこのテーブルのカラムを指定
 -その左側の3つの枠が関連先のDB-テーブル-カラムの指定欄です。それぞれ指定
-ちょっとわかりにくいですが、下の方に(保存する)ボタンがあるのでクリック
-指定したカラムはINDEXにも追加されます。
 [テーブルの構造]表示に切り替えると指定したカラム名横に銀のカギマークが付きます。
※AUTO_INCREMENT属性の追加等の変更ができなくなるので、この設定は構築作業の最後でやった方がいい。


-補足:AUTO_INCREMENTの指定-
「phpMyAdmin」でのAUTO_INCREMENTの追加指定が分かり難かったので説明します。
-左側リストから対象のテーブル名をクリックします。
-右側上部のタブメニューから「構造」タブを選択
-一覧表示されるカラムの右側の鉛筆マーク「変更」をクリック
-入力項目行の「A_I」と表示されているのが、AUTO_INCREMENT属性なのでチェック
-(保存する)ボタンをクリック
 [テーブルの構造]表示に切り替えると指定したカラム名右側の「その他」列に「AUTO_INCREMENT」と表示されます。


-補足:エクスポート/リネーム/インポート-
「phpMyAdmin」で作成したDB(データがほとんど入ってないサラの状態)を.sqlファイルにバックアップします。
-左側リストから対象のDB(スキーマ)を選択
-右側上部のタブメニューから「エクスポート」タブを選択
-特に何等か指定せず、「フォーマット」のみ「SQL」であることを確認し、(実行)をクリック
-「スキーマ名.sql」がダウンロードされます。

元のDB(スキーマ)をリネームします。
-左側リストから対象のDB(スキーマ)を選択
-右側上部のタブメニューから「操作」タブを選択
-「Rename database to」と書かれたところに、新しい名前を入力して(実行)をクリック
-名前が変わります。

バックアップした.sqlファイルからDBを復活:インポートします。
-左側リストの最上部にある「New」を選択
-右側「データベース」タブ内の「データベース名」を入力し(作成)をクリック
-右側画面上部「インポート」タブメニューをクリック
-「File to import」の下の[ファイルを選択]し、エクスポートした.sqlファイルを選択
-「フォーマット」欄の指定が「SQL」になっているのを確認して画面下の(実行)をクリック
-新規に作成したDB(スキーマ)内にテーブルが作成されます。
※リネームした元DBも残っていると、勝手に階層化されたスキーマになりました。
 リネーム側DBを削除すると階層化は解消された。


でも、実はDBについてもそんなに詳しいわけではなく、適当に進めた結果、ちょっと「失敗したなー」と思うことが2点ありました。

(1)ForeignKeyの指定は最後の最後に行いましょう
これをやった後に親テーブル/主キーの属性の変更が一切できません。
指定を解除しないと属性の変更ができないので、かなり面倒です。

(2)「照合順序」は使用する文字コードセットの意味も含む
↑そう思った方がよい。
言葉のままに何か比較する場合の順序なのだが、文字コードセットが同一でないと比較できないわけだから、意識して異なる設定にする必要がある場合を除いて、DB内では統一すべきかと思います。
なので、スキーマを作成するときから、「照合順序」を意図した文字コードセットに設定しておきましょう。
さるの場合、スキーマ作成の際に何の気なしに未指定のままにしたら、「latin1_swedish_ci」が選択されていた。
テーブル作成時も。そうすると、varchar項目(カラム)を作成するときのデフォルトも「latin1_swedish_ci」になる。

さあ、DBの完成間近に「照合順序」属性をごっそり変更したくなった場合に大弱りです。
スキーマやテーブルの「照合順序」属性を変えてもカラムの設定は変化しません。
いちいちチマチマ全部のvarcharカラムを変更しないといけなくなります。

もうちょっとマシな方法はないかと検索すると・・・以下。
参考:https://www.chin3.net/mysql-collating-sequence/

①DB(スキーマ)の「照合順序」設定を変更します
-phpMyAdminの左側リストから対象のスキーマをクリック
-右側表示の「操作」タブを選択
-「照合順序」項目を変更してその下の(実行)をクリック

②参考サイトの手順でテーブル単位のSQLを作成
-phpMyAdminの左側リストから「information_schema」を選択
-右側表示の「SQL」タブを選択し、入力欄に以下を入力し、(実行)をクリック
SELECT "ALTER TABLE ", `TABLE_NAME` , " CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;" FROM `TABLES` WHERE `TABLE_SCHEMA` = 'スキーマ名'
※utf8_general_ciに変更する場合です。
-実行結果が表示されたら、「ALTER TABLE ・・・」とリスト表示されてる下の「エクスポート」をクリック
-「Export method:」下の「詳細 - 可能な・・・」を選択
-「フォーマット:」で「CSV」を選択
-「出力:」下の「カラムの区切り記号:」、「カラム囲み記号:」、「カラムのエスケープ記号:」の入力欄を全て空にする
-一番下にある(実行)ボタンをクリック
-「TABLES.csv」がダウンロードされます。

③対象のスキーマ内のForeignKey設定の削除
※ForeignKey指定で、変更したい照合順序を指定しているvarcharなどがあった場合、その設定を一旦削除します。
-左側のスキーマ下のリストからテーブルを選択
-「構造」タブを選択し、[Relation view]ボタンをクリック
-目的の主キーをForeinKeyに設定している設定の左側にある[削除]をクリック

④ダウンロードしたSQL文を1行ずつ実行
-ダウンロードした「TABLES.csv」をテキストエディタ等で開く
-表示されるSQL文「ALTER TABLE ・・・」を1行コピペ
-phpMyAdmin画面右側の[SQL]タブを選択
-「Run SQL query・・・」欄にコピペしたSQL文を上書きして(実行)ボタンをクリック
-上記の手順で、「TABLES.csv」の全行(テーブル毎)を実行します。

⑤対象のスキーマ内のForeignKey設定の再設定
※手順は省略します。上の「補足-:ForeignKeyの指定-」参照。



DBの作成を一通りやりました。

話がまだまだ長くなるかもしれないので、ここで一旦切ります。

この後は、PHPでスクリプトを作る作業になるので、何かトピックがあれば。
では。ご機嫌よう。
m(__m)

スポンサーサイト





コメントの投稿

非公開コメント

カレンダー
01 | 2024/02 | 03
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 - -
プロフィール

さるもすなる

Author:さるもすなる
さるです。別HPサイト「さるもすなる」から侵食してきました。 山菜/きのこ、それとタイトルにしたPPバンド籠のことをメインに徒然に・・・・暇を持て余したさるの手仕事:男手芸のブログってことで。

最新記事
最新コメント
月別アーカイブ
カテゴリ
天気予報

-天気予報コム- -FC2-
本家のHPのトップ
山菜や茸の話です
PPバンドの籠作品と作り方です
投稿をお待ちしております



PVアクセスランキング にほんブログ村 にほんブログ村 ハンドメイドブログへ



マニュアルのお申し込み



検索フォーム
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR