我正在开发一个应用程序,用户将从文本文件导入几千条记录。我对表中的 3 列有唯一约束,但是当我尝试导入重复记录时,我收到此错误。
Error: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '2013-06-01 15:25:41-2013-06-01 15:25:42-null' for key 'start_time'
一旦插入由于违反约束而失败,CakePHP 将停止尝试插入数据。有没有办法让 CakePHP 忽略约束违规?
感谢您的宝贵时间。
最佳答案
这实际上取决于您导入数据的方式以及您使用的 RDBMS。
如果您在文本文件上逐行循环并在每行后插入数据,则可以捕获异常并继续处理文本文件的下一行。只需记住将失败的行推送到某种错误日志中,以便您能够找到哪些插入失败。我看到的更大的问题是,抛出的异常可能会破坏您当前的事务,并且对于大量数据插入,您肯定希望将所有内容包装在单个事务中以获得最佳性能。
如果您使用 MySQL 和 CSV 文件,您可以探索使用 LOAD DATA INFILE
命令。
关于php - CakePHP saveAll() 带唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18086211/