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 のおかげで問題が見つかりました。ファイル パスは配列から作成されるため、サーバー上のデフォルトのファイル パスはローカル環境よりも長い構造になっているため、フォルダー構造の作成に使用されるインデックスをリモート サーバーでは増やし、ローカルでは減らす必要がありました。環境 (したがって、現在、作業しているサーバーに応じてコメントを付けたりコメントを外したりするコードのセットが 2 つあり、少し面倒ですが、この部分に取り組む必要があるのはあと数日だけです。)

Ashwini さん、ありがとうございます。

4

1 に答える 1

2

'89-ci/flatfee/uploads/37'アップロードファイルのパスのようで、エラーはパスがprimary key列であることを示しています。主キー列に同じ値を持つ2つの行を含めることはできません。

SQLダンプをアップロードしようとしている場合、それを行うことはできません。キーは常に衝突します。この場合、カスタマイズされたスクリプトを作成する必要があります。

于 2012-06-21T15:59:05.083 に答える