我刚跳进了一个用CakePHP编写的现有项目。我使用
创建了模式文件Console/cake schema generate
现在,用户表缺少电子邮件字段的UNIQUE
关键字,因此我需要添加它。可悲的是,现在一些用户不止一次注册了他们的电子邮件,所以当我运行时
Console/cake schema update
SQL语句
ALTER TABLE `users`
ADD UNIQUE KEY email (`email`);
失败,因为有重复的电子邮件。
有没有办法进行自动迁移,或者我必须在更新前清理数据库?感谢
答案 0 :(得分:0)
您应该在更新之前清理数据库。
使用ALTER TABLE
会自动删除找到重复值的行,但您无法控制保留行。
ALTER IGNORE TABLE `users` ADD UNIQUE KEY email (`email`);
http://dev.mysql.com/doc/refman/5.6/en/alter-table.html说:
如果指定了
IGNORE
,则只对一行使用唯一键上具有重复项的行。其他冲突的行将被删除。不正确的值将被截断为最接近的匹配可接受值。
此功能在MySQL 5.6中已弃用,在MySQL 5.7中已删除。