Laravel Horizonのfailed_jobsテーブルを生SQL(PostgreSQL)で追加してみる
はじめに
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
コマンドは便利だけど、やっぱり内部実装を理解してから使わないと混乱するので、実験って大事
Author And Source
この問題について(Laravel Horizonのfailed_jobsテーブルを生SQL(PostgreSQL)で追加してみる), 我々は、より多くの情報をここで見つけました https://qiita.com/rymiyamoto/items/e5216876bf1b5127da6a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .