windows: xamppとpostgreSQLとlaravel
xamppとpostgreSQLでlaravelを使いたい
作成日:2024-06-15, 更新日:2024-06-25
やりたいこと
Xampp環境でlaravelを使うんだけど、そのときのDBをmySQLじゃなくてpostgerSQLにしたい
環境
- 2024-06-15時点
- Windows 11
流れ
- PostgreSQLのインスト
- Xamppのインスト
- 設定の書き換え(Xampp)
- postgreSQLの設定: データベースを作成~ユーザーを設定
- laravelの設定
PostgreSQLのインスト
公式にインストーラーがあるのでそれを使う
※Download PostgreSQL
- ver 16.3
- Windows x86-64
イントール
途中聞かれるけど、基本そのまま。一部だけ検討した
- パスワード: スーパーユーザー用
- locale: 「C」 - 設定するとインデックス作成時にオプションの指定が必要。日本語だとlocaleを使う恩恵が少ないとか…。ということでlocaleを使わないということで「C」を選択
スタートメニューに「PostgreSQL」も入ってくれる
起動・停止
基本、自動起動される
起動しているか確認する場合「コントロールパネル: システムとセキュリティ: Windowsツール」の「サービス」に「postgresql-x64-16」がいるか見る
※「postgresql-x64-16」が64bitのver.16となるっぽい
接続確認
pgAdminを起動するのが手っ取り早い…と思う
Xamppのインスト
サイトからDLして、解凍するなりインストするなりする
※すでにあるならそのままでもいいし、新たに追加するもよし
設定の書き換え(Xampp)
「php/php.ini」を改修
→「extension=php_pdo_pgsql.dll」「extension=php_pgsql.dll」を有効化
コメントされていたら解除、記述がないなら追加。
postgreSQLの設定: データベースを作成~ユーザーを設定
pgAdminで出来ると思うんだけど…やり方がわからず。しょうがないのでCUIで対応する
接続
スタートメニューに入っている「PostgreSQL」の中から「SQL Shell(psql)」を起動
「ユーザー postgres のパスワード」以外は何も入力せずにエンターキー。パスワードはスーパーユーザーのパスワード
ユーザー作成
CREATE USER hoge_user WITH PASSWORD 'hoge_pwd';
ユーザー削除
データベース作成
データベース作成時にユーザーと文字コード設定
CREATE DATABASE データベース名 OWNER hoge_user # ユーザー名 ENCODING 'UTF8' # 文字コード ;
データベースのみ作成
CREATE DATABASE データベース名;
データベースを削除
DROP DATABASE データベース名;
データベースに接続
\c データベース名
現在接続中のデータベースの確認
\c
他コマンド、SQL
データベース一覧 |
\l |
---|---|
テーブル一覧 |
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'; |
ユーザー一覧 |
SELECT rolname FROM pg_roles; |
ユーザー削除 |
DROP USER ユーザー名; |
テーブルを構成する各カラムの設定 |
SELECT column_name,data_type,character_maximum_length,is_nullable,column_default FROM information_schema.columns WHERE table_name = テーブル名; |
テーブルに設定されているインデックス |
SELECT indexname,indexdef FROM pg_catalog.pg_indexes WHERE tablename = テーブル名; |
メモ
- データベースの所有者であるユーザーを削除した場合、手動でデータベースの所有者を変更する必要がある
- mySQLのようにutf8mb4のようなエンコードの種類は無くutf8一つで対応可能
laravelの設定
config/database.php
DB_CONNECTIONを「pgsql」にする
'default' => env('DB_CONNECTION', 'pgsql'),
.env
DBの接続先を変更
DB_CONNECTION=pgsql DB_HOST=127.0.0.1 DB_PORT=5432 DB_DATABASE=データベース名 DB_USERNAME=ユーザー名 DB_PASSWORD=パスワード
pgAdmin 4
PostgreSQLをインストしたらGUIの「pgAdmin 4」も入るんだけどドコに何があるやら…
CUIの「SQL Shell(psql)」を使えばいいだけ…なんだけどGUIのほうがなにかとありがたい
テーブル一覧
phpMyAdminだとデータベースを選択しただけど紐づくテーブル一覧が確認できる…それと同じようなヤツ
「pgAdmin 4」の「Servers: PostgreSQL16: Databases」の対象のデータベース内にある「Schemas: public: Tables」の中にいる
▼「SQL Shell(psql)」だと下記コマンド
\l
selectした結果を表で表示
phpMyAdminだとSQLを叩くと結果が表になって表示される…それと同じようなヤツ
「pgAdmin 4」のメニューにある「Tools」の「Query Tool」ってヤツ。
※メニューじゃないトコにもショートカットのアイコンも存在