LoginSignup
0
0

More than 3 years have passed since last update.

FuelPHP+PostgreSQLのmigrationでエラー(Uncaught exception PDOException: 55000 - SQLSTATE[55000]: Object not in prerequisite state:)

Posted at

FuelPHP+PostgreSQLでphp oil refine migrateしたときにエラーぶっこいたので、その対処メモ。

環境

  • FuelPHP 1.8.1
  • PostgreSQL 11.7

起こったエラー

migrationコマンドを起動したら、こんなエラーが。

$ php oil refine migrate
Uncaught exception PDOException: 55000 - 
SQLSTATE[55000]: Object not in prerequisite state: 7 
ERROR:  本セッションでlastvalはまだ定義されていません 
in /fuel/core/classes/database/pdo/connection.php on line 271

いろいろ調べたんだけど、よくわからない。とりあえずmigrationデーブルを作るときにダメらしい。

先にテーブルさえ作っておけばOKなようなので作る。

テーブル作成

SQLは下記の感じで。

-- CREATE TABLE
CREATE TABLE IF NOT EXISTS migration
(
  id         serial         NOT NULL,
  type       varchar(25)    NOT NULL,
  name       varchar(50)    NOT NULL,
  migration  varchar(100)   DEFAULT ''::character varying NOT NULL 
);

-- ALTER TABLE
ALTER TABLE migration OWNER TO postgres;

-- GRANT 
GRANT REFERENCES, INSERT, TRIGGER, UPDATE, DELETE, SELECT, TRUNCATE 
ON migration TO postgres;

このあと、migrateコマンドを叩いたところ、エラーなくとおりました。

めでたしめでたし。

余談

こちらの記事(https://qiita.com/sawamur@github/items/6e61b893f571853ca453 )を参考にして、fuel/core/classes/database/pdo/connection.phpをいじったら、migrationテーブルがなくてもエラーは解消されました。

ただ、作られたテーブル構成が違ってました。idがないんですよね。

postgres=# \d migration
         |                       | Null 値を許容 |      デフォルト       
-----------+------------------------+---------------+-----------------------
 type      | character varying(25)  | not null      | 
 name      | character varying(50)  | not null      | 
 migration | character varying(100) | not null      | ''::character varying

悩んだ結果、一番最初にmigrationテーブルさえ作れば問題ないのでそんなに手間でもないですし、手作業を許容することにしました。

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