ラボ > サーバ:Xampp、OS:Windows、Laravel、LumenpostgreSQL

windows: xamppとpostgreSQLとlaravel

xamppとpostgreSQLでlaravelを使いたい

作成日:2024-06-15, 更新日:2024-06-25

やりたいこと

Xampp環境でlaravelを使うんだけど、そのときのDBをmySQLじゃなくてpostgerSQLにしたい

環境

  • 2024-06-15時点
  • Windows 11

流れ

  1. PostgreSQLのインスト
  2. Xamppのインスト
  3. 設定の書き換え(Xampp)
  4. postgreSQLの設定: データベースを作成~ユーザーを設定
  5. 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」ってヤツ。
※メニューじゃないトコにもショートカットのアイコンも存在