php - CakePHP saveAll() 带唯一约束

标签 php mysql cakephp

我正在开发一个应用程序,用户将从文本文件导入几千条记录。我对表中的 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/

相关文章:

php - 我无法显示数据库 MySQL 中的图像

php - 如何在 Laravel 5.5 中发送多封邮件

php - 剥离 html 以删除所有 js/css/html 标签以提供实际文本(显示在浏览器上)以将其用于索引和搜索

php - Joomla 3.7 未安装错误显示错误页面

mysql - 使用查询结果作为表名

php - Cakephp国际化

php - 在我的网站中开发“点赞”按钮,而不是添加 Facebook“点赞”按钮

java - 将 csv 数据从存储导入 Cloud SQL 不起作用 - 状态始终为 "pending"

jquery - CakePHP 提交 ajax 添加操作后取消重定向到 View

cakephp - 在 cakephp 下拉菜单中添加默认选项 "Please Select"