У меня есть транзакция, которая вставляет данные в три таблицы. Эта транзакция была неудачной, но я обнаружил, что если я удалю отношение в phpmyadmin, транзакция завершится успешно.
Чтобы заново добавить отношение, мне нужно удалить все данные в таблицах!
Три таблицы состоят из: 'User_Account' (который имеет первичный ключ),
«Элемент», который также имеет первичный ключ
'User_Account' и 'Item' связаны между собой соединительной таблицей с именем 'User_Item' и составным ключом. На изображения для элемента ссылается таблица «Image_Items», на которую ссылается внешний ключ из таблицы «Item».
Я не понимаю, почему это не должно работать? Поскольку только одна таблица, кажется, использует ключ за один раз? Есть предложения относительно того, почему это может происходить? Или что я делаю не так!
CREATE TABLE IF NOT EXISTS `user_item` (
`account_id` int(10) unsigned NOT NULL COMMENT 'Foreign key from account',
`item_id` int(10) unsigned NOT NULL COMMENT 'Foreign key from item',
`status` enum('active','deleted') NOT NULL COMMENT 'Is item active or been deleted',
`date_added` varchar(50) NOT NULL COMMENT 'Date item was added',
UNIQUE KEY `account_id` (`account_id`,`item_id`),
KEY `item_id` (`item_id`)
)
CREATE TABLE IF NOT EXISTS `item` (
`item_id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'primary key for item',
`item_name` varchar(20) NOT NULL COMMENT 'title name of the item',
`catagory`enum('accessories','jackets','coats','footwear','legwear','jeanswear','dresses','s hirts','tops','t-shirts','knitwear','skirts','shorts') NOT NULL COMMENT 'item catagory',
`brand` varchar(20) NOT NULL COMMENT 'brand of product',
`store` varchar(20) NOT NULL COMMENT 'store the item was purchased',
`location` varchar(20) NOT NULL COMMENT 'location the item was purchased',
`month` enum('January','February','March','April','May','June','July','August','September','October' ,'November','December') NOT NULL COMMENT 'month the item was purchased',
`year` int(2) NOT NULL COMMENT 'year the item was purchased',
`details` varchar(500) NOT NULL COMMENT 'details about the item description',
`date` varchar(50) NOT NULL COMMENT 'date item created',
PRIMARY KEY (`item_id`),
UNIQUE KEY `item_id` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='holds data about the item' AUTO_INCREMENT=20 ;
CREATE TABLE IF NOT EXISTS `user_account` (
`account_id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'unique account ID',
`user_id` int(10) unsigned NOT NULL COMMENT 'foreign key from user table',
`username` varchar(50) NOT NULL COMMENT 'users username default emailaddress',
`account_status` enum('active','online','frozen','offline','hidden') NOT NULL COMMENT 'status of account, online offline frozen hidden active',
`account_type` enum('admin','user') NOT NULL COMMENT 'type of account user or admin',
`account_created` varchar(50) NOT NULL COMMENT 'date the account was created',
`account_modified` varchar(50) NOT NULL COMMENT 'date account was last modified',
`salt` int(10) unsigned NOT NULL COMMENT 'encryption',
`password` char(40) NOT NULL COMMENT 'users password',
PRIMARY KEY (`account_id`),
UNIQUE KEY `user_id` (`user_id`,`username`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='details of the users account' AUTO_INCREMENT=56 ;
И запрос
$mysql = "INSERT INTO user_item(account_id,item_id,status,date_added)
VALUES('$accountId','$itemId','$status','$date')";
$mysqlResult = $this->conn->query($mysql)or die(mysql_error());
Спасибо