justcoded / yii2-starter

Yii2 JustCoded Project Template
Other
41 stars 19 forks source link

Error "Access denied" on a system trigger when running yii fixture/load User #48

Closed gjaryczewski closed 3 years ago

gjaryczewski commented 4 years ago

When running yii fixture/load User, I received that messages with the error inside. (The error text is translated from Polish, so sorry for unintentional misleading).

C:\Users\gjaryczewski\Documents\yii2-starter>php yii fixture/load User Fixtures namespace is: app\fixtures

Global fixtures will be used:

    1. yii\test\InitDbFixture

Fixtures below will be loaded:

    1. User

Be aware that: Applying leads to purging of certain data in the database!

Load above fixtures? (yes|no) [no]:yes Exception 'yii\db\Exception' with message 'SQLSTATE[42501]: Insufficient privilege: 7 ERROR: access denied: "RI_ConstraintTrigger_c_16472" is a system trigger The SQL being executed was: ALTER TABLE "public"."auth_assignment" DISABLE TRIGGER ALL; ALTER TABLE "public"."auth_item" DISABLE TRIGGER ALL; ALTER TABLE "public"."auth_item_child" DISABLE TRIGGER ALL; ALTER TABLE "public"."auth_rule" DISABLE TRIGGER ALL; ALTER TABLE "public"."migration" DISABLE TRIGGER ALL; ALTER TABLE "public"."settings" DISABLE TRIGGER ALL; ALTER TABLE "public"."user" DISABLE TRIGGER ALL; '

in C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\db\Schema.php:674

Error Info: Array ( [0] => 42501 [1] => 7 [2] => ERROR: access denied: "RI_ConstraintTrigger_c_16472" is a system trigger )

Stack trace:

0 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\db\Command.php(1295): yii\db\Schema->convertException(Object(PDOException), 'ALTER TABLE "pu...')

1 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\db\Command.php(1091): yii\db\Command->internalExecute('ALTER TABLE "pu...')

2 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\test\InitDbFixture.php(99): yii\db\Command->execute()

3 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\test\InitDbFixture.php(78): yii\test\InitDbFixture->checkIntegrity(false)

4 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\test\FixtureTrait.php(117): yii\test\InitDbFixture->beforeUnload()

5 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\console\controllers\FixtureController.php(158): yii\console\controllers\FixtureController->unloadFixtures(Array)

6 [internal function]: yii\console\controllers\FixtureController->actionLoad(Array)

7 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\base\InlineAction.php(57): call_user_func_array(Array, Array)

8 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\base\Controller.php(157): yii\base\InlineAction->runWithParams(Array)

9 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\console\Controller.php(164): yii\base\Controller->runAction('load', Array)

10 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\base\Module.php(528): yii\console\Controller->runAction('load', Array)

11 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\console\Application.php(180): yii\base\Module->runAction('fixture/load', Array)

12 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\console\Application.php(147): yii\console\Application->runAction('fixture/load', Array)

13 C:\Users\gjaryczewski\Documents\yii2-starter\vendor\yiisoft\yii2\base\Application.php(386): yii\console\Application->handleRequest(Object(yii\console\Request))

14 C:\Users\gjaryczewski\Documents\yii2-starter\yii(26): yii\base\Application->run()

15 {main}

main}

aprokopenko commented 4 years ago

Hi gjaryczewski ,

Thanks for your time posting feedback and bug report.

Unfortunately, I don't have any Windows machine to reproduce this issue. This starter were tested under MacOS and Linux. If you have standard MySQL 5.7x database with standard setup - fixtures are working fine.

To run fixtures Yii first disable all foreign keys check to clean up tables before loading data. From the error provided I can suppose that configuration of your DB/user permissions do not allow to perform this operation.

If you find out what the problem is - give me a shot or a Pull Request how to improve it to make it works on Windows as well.