当我这样做时:
app/console d:s:u --dump-sql
它告诉我
ALTER TABLE coupon ADD CONSTRAINT FK_64BF3F02A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;
没关系,所以我尝试执行:
app/console d:s:u --dump-sql --force
它告诉我:
ALTER TABLE coupon ADD CONSTRAINT FK_64BF3F02A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;
Updating database schema...
Database schema updated successfully! "1" queries were executed
我尝试检查是否一切正常并执行:
app/console d:s:u --dump-sql
它再次向我展示:
ALTER TABLE coupon ADD CONSTRAINT FK_64BF3F02A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE;
可能是什么问题?我没有错误,但也没有结果。
在 mysql 进行所有操作后创建表:
CREATE TABLE `coupon` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`code` varchar(255) NOT NULL DEFAULT '',
`months` tinyint(1) NOT NULL,
`billed` tinyint(1) NOT NULL DEFAULT '1' COMMENT 'Require CC details or not',
`email` varchar(255) DEFAULT NULL,
`first_name` varchar(255) DEFAULT NULL,
`last_name` varchar(255) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`created_at` datetime DEFAULT NULL,
`used_at` datetime DEFAULT NULL,
`expired_at` datetime DEFAULT NULL,
`deleted` tinyint(1) NOT NULL DEFAULT '0',
`multiuser` tinyint(1) NOT NULL DEFAULT '0',
`days` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
KEY `IDX_64BF3F02A76ED395` (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=7154 DEFAULT CHARSET=utf8
最佳答案
问题是您在表中使用的引擎。 MyISAM 无法存储外键,MySQL 只是默默地忽略任何尝试添加外键的 SQL。 我建议一般使用 InnoDB 作为所有列的引擎(参见 MyISAM versus InnoDB 了解差异)
ALTER TABLE `coupon` ENGINE = InnoDB ;
然后就可以再次执行外键sql了
ALTER TABLE `coupon`
ADD CONSTRAINT `FK_64BF3F02A76ED395`
FOREIGN KEY (`user_id`)
REFERENCES `user` (`id`)
ON DELETE CASCADE
ON UPDATE CASCADE;
关于php - Symfony:学说进程 d:s:u 但数据库没有变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41110917/