Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Duplicate Entry in VirtueMart

    Buongiorno a tutti,
    ho caricato su un dominio joomla + VirtueMart (il componente per l'e-commerce).

    Oggi ho notato che gli ordini non vengono salvati...ovvero:
    VirtueMart, ad ogni ordine effettuato, scrive in 5 tabelle:

    jos_vm_orders
    jos_vm_order_history
    jos_vm_order_item
    jos_vm_order_payment
    jos_vm_order_user_info

    tutte queste hanno la chiave primaria settata a int(11) auto_increment...
    il problema sta che quando va a scrivere il record nell'ultima tabella, jos_vm_order_user_info , vi è un errore di Duplicate entry xxx, cosa che nelle altre tabelle non c'è!!

    In passato ho avuto lo stesso problema con errore Duplicate entry '127' e avevo risolto semplciemente cambiando il tipo di campo da tinyint a int...ma ora il problema sembra essere diverso!



    Ringrazio in anticipo per gli eventuali aiuti

  2. #2
    mmm se c'è un errore in un componente di Joomla ti conviene andare sul forum degli sviluppatori del componente, e sottoporgli il tuo problema. Loro sono esperti di VirtueMart, mentre io non l'ho mai usato e non saprei proprio dove può essere il problema.

  3. #3
    non credo sia un problema di componente!

  4. #4
    sulla base di cosa affermi ciò? Se il componente va in palla per un'incompatibilità con un altro elemento, è un problema di componente.

  5. #5
    non è un problema i componente semplicemente perchè ho provato ad eseguire le query di inserimento manualmente ed ho lo stesso problema!!

  6. #6
    Utente di HTML.it L'avatar di Enoa
    Registrato dal
    Jul 2005
    Messaggi
    573

    Re: Duplicate Entry in VirtueMart

    Originariamente inviato da clDesigner
    tutte queste hanno la chiave primaria settata a int(11) auto_increment...
    il problema sta che quando va a scrivere il record nell'ultima tabella, jos_vm_order_user_info , vi è un errore di Duplicate entry xxx, cosa che nelle altre tabelle non c'è!!

    In passato ho avuto lo stesso problema con errore Duplicate entry '127' e avevo risolto semplciemente cambiando il tipo di campo da tinyint a int...ma ora il problema sembra essere diverso!
    Sei sicuro che sia il campo id ad essere duplicato? Magari è un altro campo che è settato come "UNIQUE" e riceve un valore duplicato.
    Posta il risultato di:
    codice:
    SHOW CREATE TABLE jos_vm_order_user_info
    oppure se hai un'interfaccia grafica per il db, controlla se ci sono altri campi "UNIQUE"

  7. #7
    nessun campo UNIQUE...
    ho provato a rinominare, riparare, analizzare e ottimizzare la tabella e a volte mi da degli errori...come un out of memory, o got error 127..., ma sul web non ho trovato come risolverlo! leggo solo che c'è da fare un REPAIR TABLE, ma il problema è risolto solo per un inserimento, poi ritorna l'errore...

    Queste sono le tabelel su cui scrive il componente VirtueMart al momento di registrare un ordine:

    CREATE TABLE `jos_vm_order_history` (
    `order_status_history_id` int(11) NOT NULL auto_increment,
    `order_id` int(11) NOT NULL default '0',
    `order_status_code` char(1) NOT NULL default '0',
    `date_added` datetime NOT NULL default '0000-00-00 00:00:00',
    `customer_notified` int(1) default '0',
    `comments` text,
    PRIMARY KEY (`order_status_history_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=191 DEFAULT CHARSET=latin1 COMMENT='Stores all actions and changes that occur to an order' AUTO_INCREMENT=191 ;

    CREATE TABLE `jos_vm_order_item` (
    `order_item_id` int(11) NOT NULL auto_increment,
    `order_id` int(11) default NULL,
    `user_info_id` varchar(32) default NULL,
    `vendor_id` int(11) default NULL,
    `product_id` int(11) default NULL,
    `order_item_sku` varchar(64) NOT NULL default '',
    `order_item_name` varchar(64) NOT NULL default '',
    `product_quantity` int(11) default NULL,
    `product_item_price` decimal(15,5) default NULL,
    `product_final_price` decimal(12,2) NOT NULL default '0.00',
    `order_item_currency` varchar(16) default NULL,
    `order_status` char(1) default NULL,
    `cdate` int(11) default NULL,
    `mdate` int(11) default NULL,
    `product_attribute` text,
    PRIMARY KEY (`order_item_id`),
    KEY `idx_order_item_order_id` (`order_id`),
    KEY `idx_order_item_user_info_id` (`user_info_id`),
    KEY `idx_order_item_vendor_id` (`vendor_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=180 DEFAULT CHARSET=latin1 COMMENT='Stores all items (products) which are part of an order' AUTO_INCREMENT=180 ;

    CREATE TABLE `jos_vm_order_payment` (
    `order_id` int(11) NOT NULL default '0',
    `payment_method_id` int(11) default NULL,
    `order_payment_code` varchar(30) NOT NULL default '',
    `order_payment_number` blob,
    `order_payment_expire` int(11) default NULL,
    `order_payment_name` varchar(255) default NULL,
    `order_payment_log` text,
    `order_payment_trans_id` text NOT NULL,
    KEY `idx_order_payment_order_id` (`order_id`),
    KEY `idx_order_payment_method_id` (`payment_method_id`)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COMMENT='The payment method that was chosen for a specific order';

    CREATE TABLE `jos_vm_order_user_info` (
    `order_info_id` int(11) NOT NULL auto_increment,
    `order_id` int(11) NOT NULL default '0',
    `user_id` int(11) NOT NULL default '0',
    `address_type` char(2) default NULL,
    `address_type_name` varchar(32) default NULL,
    `company` varchar(64) default NULL,
    `title` varchar(32) default NULL,
    `last_name` varchar(32) default NULL,
    `first_name` varchar(32) default NULL,
    `middle_name` varchar(32) default NULL,
    `phone_1` varchar(32) default NULL,
    `phone_2` varchar(32) default NULL,
    `fax` varchar(32) default NULL,
    `address_1` varchar(64) NOT NULL default '',
    `address_2` varchar(64) default NULL,
    `city` varchar(32) NOT NULL default '',
    `state` varchar(32) NOT NULL default '',
    `country` varchar(32) NOT NULL default 'US',
    `zip` varchar(32) NOT NULL default '',
    `user_email` varchar(255) default NULL,
    `extra_field_1` varchar(255) default NULL,
    `extra_field_2` varchar(255) default NULL,
    `extra_field_3` varchar(255) default NULL,
    `extra_field_4` char(1) default NULL,
    `extra_field_5` char(1) default NULL,
    `bank_account_nr` varchar(32) NOT NULL default '',
    `bank_name` varchar(32) NOT NULL default '',
    `bank_sort_code` varchar(16) NOT NULL default '',
    `bank_iban` varchar(64) NOT NULL default '',
    `bank_account_holder` varchar(48) NOT NULL default '',
    `bank_account_type` enum('Checking','Business Checking','Savings') NOT NULL default 'Checking',
    PRIMARY KEY (`order_info_id`),
    KEY `idx_order_info_order_id` (`order_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=148 DEFAULT CHARSET=latin1 MAX_ROWS=65536 AVG_ROW_LENGTH=1048576 COMMENT='Stores the BillTo and ShipTo Information at order time' AUTO_INCREMENT=148 ;

    CREATE TABLE `jos_vm_orders` (
    `order_id` int(11) NOT NULL auto_increment,
    `user_id` int(11) NOT NULL default '0',
    `vendor_id` int(11) NOT NULL default '0',
    `order_number` varchar(32) default NULL,
    `user_info_id` varchar(32) default NULL,
    `order_total` decimal(15,2) NOT NULL default '0.00',
    `order_subtotal` decimal(15,5) default NULL,
    `order_tax` decimal(10,2) default NULL,
    `order_tax_details` text NOT NULL,
    `order_shipping` decimal(10,2) default NULL,
    `order_shipping_tax` decimal(10,2) default NULL,
    `coupon_discount` decimal(12,2) NOT NULL default '0.00',
    `order_discount` decimal(12,2) NOT NULL default '0.00',
    `order_currency` varchar(16) default NULL,
    `order_status` char(1) default NULL,
    `cdate` int(11) default NULL,
    `mdate` int(11) default NULL,
    `ship_method_id` varchar(255) default NULL,
    `customer_note` text NOT NULL,
    `ip_address` varchar(15) NOT NULL default '',
    PRIMARY KEY (`order_id`),
    KEY `idx_orders_user_id` (`user_id`),
    KEY `idx_orders_vendor_id` (`vendor_id`),
    KEY `idx_orders_order_number` (`order_number`),
    KEY `idx_orders_user_info_id` (`user_info_id`),
    KEY `idx_orders_ship_method_id` (`ship_method_id`)
    ) ENGINE=MyISAM AUTO_INCREMENT=7159 DEFAULT CHARSET=latin1 COMMENT='Used to store all orders' AUTO_INCREMENT=7159 ;


    Le strutture sno molto simili tra loro però "jos_vm_order_user_info" mi da questo fastidioso errore.
    E queste sono le query eseguite:

    Codice PHP:
            $q "INSERT INTO #__{vm}_orders \n";
            
    $q .= "(user_id, vendor_id, order_number, user_info_id, ship_method_id, \n";
            
    $q .= "order_total, order_subtotal, order_tax, order_tax_details, order_shipping, \n";
            
    $q .= "order_shipping_tax, order_discount, coupon_discount,order_currency, order_status, cdate, \n";
            
    $q .= "mdate,customer_note,ip_address) \n";
            
    $q .= "VALUES (";
            
    $q .= "'" $auth["user_id"] . "', ";
            
    $q .= $ps_vendor_id ", ";
            
    $q .= "'" $order_number "', '";
            
    $q .= $d["ship_to_info_id"] . "', '";

            if (!empty(
    $d["shipping_rate_id"])) {
                
    $q .= urldecode($d["shipping_rate_id"]) . "', '";
            }
            else {
                
    $q .= "', '";
            }
            
    $q .= $order_total "', '";
            
    $q .= $order_subtotal "', '";
            
    $q .= $order_tax "', '";
            
    $q .= serialize($order_tax_details). "', '";
            
    $q .= $order_shipping "', '";
            
    $q .= $order_shipping_tax "', '";
            
    $q .= $payment_discount "', '";
            
    $q .= $coupon_discount "', '";
            
    $q .= $_SESSION['vendor_currency']."', "/* Currency is at the product level - line item */
            
    $q .= "'P', '";
            
    $q .= $timestamp "', '";
            
    $q .= $timestamp"', '";
            
    $q .= $db->getEscapedhtmlspecialchars(strip_tags($d['customer_note']))) . "', '";
            if (!empty(
    $_SERVER['REMOTE_ADDR'])) {
                
    $q .= $_SERVER['REMOTE_ADDR'] . "') ";
            }
            else {
                
    $q .= "unknown') ";
            }



            
    $q "INSERT INTO #__{vm}_order_payment ";
            
    $q .= "(order_id, order_payment_code, payment_method_id, order_payment_number, ";
            
    $q .= "order_payment_expire, order_payment_log, order_payment_name, order_payment_trans_id) ";
            
    $q .= "VALUES ('$order_id', ";
            
    $q .= "'" $d["order_payment_code"] . "', ";
            
    $q .= "'" $d["payment_method_id"] . "', ";
            
    $q .= "ENCODE(\"$payment_number\",\"" ENCODE_KEY "\"), ";
            
    $q .= "'" . @$_SESSION["ccdata"]["order_payment_expire"] . "',";
            
    $q .= "'" . @$d["order_payment_log"] . "',";
            
    $q .= "'" . @$_SESSION["ccdata"]["order_payment_name"] . "',";
            
    $q .= "'" $vmInputFilter->safeSQL( @$d["order_payment_trans_id"] ). "'";
            
    $q .= ")";


            
    $q "INSERT INTO #__{vm}_order_history ";
            
    $q .= "(order_id,order_status_code,date_added,customer_notified,comments) VALUES (";
            
    $q .= "'$order_id', 'P', '" $mysqlDatetime "', 1, '')";



            
    $q "INSERT INTO `#__{vm}_order_user_info` ";
            
    $q .= "SELECT '', '$order_id', '".$auth['user_id']."', address_type, address_type_name, company, title, last_name, first_name, middle_name, phone_1, phone_2, fax, address_1, address_2, city, state, country, zip, user_email, extra_field_1, extra_field_2, extra_field_3, extra_field_4, extra_field_5,bank_account_nr,bank_name,bank_sort_code,bank_iban,bank_account_holder,bank_account_type FROM #__{vm}_user_info WHERE user_id='".$auth['user_id']."' AND address_type='BT'"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.