Sql CakePHP。如何使用另一个主键在表中进行模型测试?

Sql CakePHP。如何使用另一个主键在表中进行模型测试?,sql,testing,cakephp,primary-key,auto-increment,Sql,Testing,Cakephp,Primary Key,Auto Increment,我有这张桌子 CREATE TABLE myexamples.problems ( id INT, name VARCHAR(45) NULL , pk_id INT AUTO_INCREMENT PRIMARY KEY ); 但是当我尝试用cakephp测试一个模型时,它失败了,因为该表有两个自动增量属性。下面的查询 CREATE TABLE `test_suite_problems` ( `id` int(11) NOT NULL AUTO_INCREMENT, `na

我有这张桌子

CREATE TABLE myexamples.problems (
  id INT,
  name VARCHAR(45) NULL ,
  pk_id INT AUTO_INCREMENT PRIMARY KEY
);
但是当我尝试用cakephp测试一个模型时,它失败了,因为该表有两个自动增量属性。下面的查询

CREATE TABLE `test_suite_problems` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(45) DEFAULT NULL,
  `pk_id` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY  (`pk_id`)
)
DEFAULT CHARSET=latin1, COLLATE=latin1_swedish_ci, ENGINE=InnoDB;
引发此错误:

"1075: Incorrect table definition; there can be only one auto column and it must be defined as a key"
我在模范班上有一个学生

<?php
class Problem extends AppModel {
    var $name = 'Problem';
    var $displayField = 'name';
    var $primaryKey='problems';
}
?>


但是我不知道如何使字段ID没有自动递增属性,并且我无法更改表结构。

您没有名为“problems”的字段。所以这是一个问题。您的PK似乎是PK_id,因此请为primaryKey设置正确的字段名

另一个不是CakePHP问题:

1075: Incorrect table definition; there can be only one auto column and it must be defined as a key
这是一个SQL错误。不能有两个自动递增字段。更改fixture以匹配没有两个自动递增字段的实际表模式


您的数据库架构未遵循CakePHPs约定。遵循这些惯例,您会遇到更少的问题,并从框架的“自动魔法”中获益。我猜您试图烘焙装置,但cake无法识别正确的字段,因为您没有遵守约定。

是的,$primaryKey=问题是一个错误,当我复制此内容时,我有$primaryKey=pk\u key。最后,我确定了问题所在。当使用bake创建problem_fixture.php时,var$字段是否有两个自动数字字段,即“id”字段和“pk_id”字段。我在那里删除了id中的自动数字,每次更新时都会删除,并且工作没有问题。这正是我告诉你的。