问题描述
我有一个用户表,其中包含所有需要的内容(模型,控制器,视图,装置,测试案例)。 除其他数据外,该用户表还引用了城市表,国家和街道表。 对于城市,国家和街道,一切也都可以正常工作:(模型,控制器,视图,装置,测试用例)。
Fixtrue和Text Cases是使用Bake构建的。
虽然我可以为城市,国家和街道运行TestCases,但由于出现此错误消息,我无法为用户运行TestCases:
Exception: Unable to create constraints for fixture "App\Test\Fixture\UsersFixture" in "App\Test\TestCase\Controller\UsersControllerTest" test case:
sqlSTATE[42000]: Syntax error or access violation: 1142 REFERENCES command denied to user 'cake_user'@'localhost' for table 'cities'
In [/opt/git/premesec/vendor/cakePHP/cakePHP/src/TestSuite/Fixture/FixtureManager.PHP,line 335]
让我感到困惑的是,我可以在运行城市TestCases时为城市运行固定装置,但是当为用户TestCases运行相同的装置时存在一个问题。
以下是UsersFixtures.PHP的约束条件:
'_constraints' => [
'primary' => ['type' => 'primary','columns' => ['id'],'length' => []],'city_id' => ['type' => 'foreign','columns' => ['city_id'],'references' => ['cities','id'],'update' => 'noAction','delete' => 'noAction','fk_country_id' => ['type' => 'foreign','columns' => ['country_id'],'references' => ['countries','house_number_id' => ['type' => 'foreign','columns' => ['house_number_id'],'references' => ['house_numbers','street_id' => ['type' => 'foreign','columns' => ['street_id'],'references' => ['streets',],
以下是CitiesFixtures.PHP的约束条件:
'_constraints' => [
'primary' => ['type' => 'primary',
CakePHP v4.0.6
PHP版本:7.2.24
适用于Linux(x86_64)的MysqL Ver 14.14 distrib 5.7.31
解决方法
请仔细检查错误消息,它实际上与cities
表无关,而是与不允许您的帐户运行的REFERENCES
命令有关,也就是说,这是{中的外键约束{1}}固定装置,很可能不会参与您的其他测试,即您的其他测试没有加载Users
固定装置。
长话短说,您要么需要授予Users
帐户相应的cake_user
特权(这是创建外键约束的必要条件),要么选择已经具有所需的特权。
另请参见