LoginSignup
0
0

More than 3 years have passed since last update.

Laravel Horizonのfailed_jobsテーブルを生SQL(PostgreSQL)で追加してみる

Posted at

はじめに

Laravel Horizon導入時に失敗したjobを溜め込むfailed_jobsテーブルが必要ですが、migrateがLaravelとは別で機能しているため、自前でテーブル構成を定義したときの話です

環境

name ver
PHP 7.3
Laravel 6.5
PostgreSQL 10.6

Laravelでマイグレーションした場合のテーブル構造

既存でPostgreSQLを使ってHorizonを導入しているプロジェクトがあったのでテーブルをみてみるとこんな感じだった

hoge=> \d+ failed_jobs
                                                              Table "public.failed_jobs"
   Column   |              Type              | Collation | Nullable |                 Default                 | Storage  | Stats target | Description
------------+--------------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------
 id         | bigint                         |           | not null | nextval('failed_jobs_id_seq'::regclass) | plain    |              |
 connection | text                           |           | not null |                                         | extended |              |
 queue      | text                           |           | not null |                                         | extended |              |
 payload    | text                           |           | not null |                                         | extended |              |
 exception  | text                           |           | not null |                                         | extended |              |
 failed_at  | timestamp(0) without time zone |           | not null | CURRENT_TIMESTAMP                       | plain    |              |
Indexes:
    "failed_jobs_pkey" PRIMARY KEY, btree (id)

念の為新規でLaravelの環境を用意してチュートリアルどおり入れてみても同様なのでこの構成で大丈夫そう
https://readouble.com/laravel/6.x/ja/queues.html

実行したSQL

上のテーブル構造から以下のSQLを実行で問題なく作成できた

CREATE TABLE failed_jobs (
    id         BIGSERIAL PRIMARY KEY,
    connection TEXT NOT NULL,
    queue      TEXT NOT NULL,
    payload    TEXT NOT NULL,
    exception  TEXT NOT NULL,
    failed_at  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
);

おわりに

artisanコマンドは便利だけど、やっぱり内部実装を理解してから使わないと混乱するので、実験って大事

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0