1

我正在开发 CI 中的应用程序,我有一个模型,可以将上传表单中的图像路径插入数据库。

此代码在我的本地主机环境中 100% 正确,但是在远程服务器上运行它时失败

Error Number: 1062

Duplicate entry '89-ci/flatfee/uploads/37' for key 'PRIMARY'

这个想法是使用一个将listingid映射到image_path的image_map_table,因此listingid必须在每个图像路径的表中重复多次,因此存在重复条目。下面是模型中的函数:

function insert_paths($params, $transID){

    $lid = $this->getListingID($transID);

    if($lid != false) {
        $i = 0;
        foreach ($params['image_paths'] as $value) {
            $sql = "INSERT INTO listing_image_map(idlisting, image_path) VALUES(".$lid.", '".$value."')";
            $q = $this->db->query($sql);    
            $i++;
        }
        if(sizeof($params['image_paths']) == $i ){
            return true;
        }
    } else {
        return false;
    }
}

$params 是一个数组,从控制器传入,包含上传表单中的所有图像路径。我理解这个错误,以及它为什么在基本层面上发生,但是更详细的解释为什么它在本地主机上而不是在远程服务器上会很好,以及可能的解决方案。

谢谢。

编辑:感谢 Ashwini Dhekane,我发现了问题。文件路径是从数组创建的,因此服务器上的默认文件路径在其结构中比在我的本地环境中更长,因此用于创建文件夹结构的索引必须为远程服务器增加并在本地减少环境(所以现在我有两组代码,我根据我正在使用的服务器不断评论和取消评论,有点麻烦,但我只需要在这部分工作几天。)

谢谢 Ashwini,你的帖子让我找到了正确的区域,所以我会把它标记为正确的。

4

1 回答 1

2

'89-ci/flatfee/uploads/37'似乎是上传文件的路径,错误显示路径是primary key列。主键列中不能有任何两行具有相同值。

如果您尝试上传 SQL 转储,则无法执行;键总是会碰撞。在这种情况下,您将不得不编写自定义脚本。

于 2012-06-21T15:59:05.083 回答