Я изменил свою таблицу пользователей с помощью пользовательского ограничения проверки, чтобы предотвратить сохранение нулевых паролей, если пользователь не был создан с помощью единого входа, ссылаясь на этот вопрос , с помощью этого оператора БД:
DB::statement("ALTER TABLE skillsdb.users ADD CONSTRAINT chk_password_null CHECK (COALESCE(password, '') <> '' OR is_sso)");
И это прекрасно работает. Однако проблема заключается в части перехода «down ()». Этот оператор выдает ошибки:
DB::statement("ALTER TABLE skillsdb.users DROP CONSTRAINT chk_password_null");
Даже если копирование / вставка этого запроса непосредственно в мою консоль PostgresQL работает как задумано. Вот точная ошибка:
Rolling back: 2019_10_11_124350_add_sso_users
In Connection.php line 664:
SQLSTATE[42704]: Undefined object: 7 ERROR: constraint "chk_password_null"
of relation "users" does not exist (SQL: ALTER TABLE skillsdb.users DROP C
ONSTRAINT chk_password_null)
In PDOStatement.php line 119:
SQLSTATE[42704]: Undefined object: 7 ERROR: constraint "chk_password_null"
of relation "users" does not exist
In PDOStatement.php line 117:
SQLSTATE[42704]: Undefined object: 7 ERROR: constraint "chk_password_null"
of relation "users" does not exist
Для ясности, я трижды проверил ограничение , существует ли , и что запрос отката работает, когда передается непосредственно в postgres. Есть идеи, почему ремесленник умоляет?