如何解决为什么CakePHP无法为一个控制器创建固定装置,而为另一个控制器返回SQLSTATE [42000]?
快速切出CakePHP应用程序(重要部分)
我有一个用户表,其中包含所有需要的内容(模型,控制器,视图,装置,测试案例)。 除其他数据外,该用户表还引用了城市表,国家和街道表。 对于城市,国家和街道,一切也都可以正常工作:(模型,控制器,视图,装置,测试用例)。
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
特权(这是创建外键约束的必要条件),要么选择已经具有所需的特权。
另请参见
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。