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->getEscaped( htmlspecialchars(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'";