Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令-使用fk更新列_Php_Mysql_Doctrine Orm_Doctrine_Symfony 2.7 - Fatal编程技术网

Php 条令-使用fk更新列

Php 条令-使用fk更新列,php,mysql,doctrine-orm,doctrine,symfony-2.7,Php,Mysql,Doctrine Orm,Doctrine,Symfony 2.7,我有两个表(让我们称它们为A(id,其他一些列)和B(A\u id,其他一些列)。显然a_idfrom B指向idfrom a(上面有一个fk)。一切都很好。现在。。。问题是在创建表时,错误地将id设置为signed。我想修复它并使其不带签名(但也可能是影响列定义的任何其他更改) 如果根据查询进行此操作,则停用fks/删除该fk,进行更改,激活后退/添加后退fk 我需要从条令:schema:update(因为在服务器部署bla-bla->让我们说因为过程上自动运行)中执行此操作 我对实体进行了具

我有两个表(让我们称它们为A(
id
其他一些列
)和B(
A\u id
其他一些列
)。显然
a_id
from B指向
id
from a(上面有一个fk)。一切都很好。现在。。。问题是在创建表时,错误地将id设置为signed。我想修复它并使其不带签名(但也可能是影响列定义的任何其他更改)

如果根据查询进行此操作,则停用fks/删除该fk,进行更改,激活后退/添加后退fk

我需要从条令:schema:update(因为在服务器部署bla-bla->让我们说因为过程上自动运行)中执行此操作

我对实体进行了具体更改:

A: 
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer", options={"unsigned"=true})
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;




 * @ORM\Table(name="B", uniqueConstraints={@ORM\UniqueConstraint(name="a_b", columns={"aEntity"})})
 * @ORM\HasLifecycleCallbacks()
 B:
   /**
    * @var aEntity
    *
    * @ORM\ManyToOne(targetEntity="CoreBundle\Entity\A", inversedBy="bEntity")
    * @ORM\JoinColumn(name="a_id", referencedColumnName="id")
   */
   private $aEntity;
生成的代码看起来正确:

 $php app/console doctrine:schema:update --dump-sql
 ALTER TABLE A CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL;
 ALTER TABLE B CHANGE a_id a_id INT UNSIGNED DEFAULT NULL;
但是。。。当然,我会得到一个错误(因为fk约束列定义,并且没有禁用)


我如何使用doctrine schema update更新表(可能它有一个标志或什么?我个人找不到任何标志。)?

你看到这个问题了吗?不我现在查过了,但我不知道怎么用。你能解释一下吗。?(据我所见,它指的是db迁移-我没有使用迁移,我使用实体注释来更新架构;旁注…我以前从未使用过迁移,但从我在这里看到的:它没有引用实体,它是手动更新内容->我承认我的假设可能是错误的,如果是,请指出其中:))。我认为单靠注释是无法做到这一点的。
 An exception occurred while executing 'ALTER TABLE A CHANGE id id INT UNSIGNED AUTO_INCREMENT NOT NULL':                                          
 SQLSTATE[HY000]: General error: 1833 Cannot change column 'id': used in a foreign key constraint 'FK_3041AF5B7975B7E7' of table 'db_name.a'