আমি পিএইচপি-স্ক্রিপ্টে কাজ করছি যা customers.csv
মাইএসকিউএল টেবিলের ( customers
) মধ্যে সিএসভি ফাইল ( ) আমদানি করে ।
মাইএসকিএল টেবিলের মধ্যে সিএসভি-ফাইলের সামগ্রী সন্নিবেশ করার আগে আমি প্রথমে মূল customers
টেবিলটি ব্যাক আপ করছি ।
আমি পুরো আমদানি প্রক্রিয়াটি (ব্যাক আপ সহ) একটি মাইএসকিএল লেনদেনে মুড়ে রাখছি (যখন মাঝখানে কোথাও সিএসভি দুর্নীতিগ্রস্থ হয়ে পড়েছে তার জন্য অ্যাকাউন্টিং করতে এবং আমদানিটি পারমাণবিক কিনা তা নিশ্চিত করার জন্য)।
সমস্যাটি হ'ল রোলব্যাক কাজ করার মতো মনে হয় না যখন আমি ঠিক কথার পরে ডেকে আছি INSERT INTO
: পিএইচপিএমআইএডমিনের মাধ্যমে ডাটাবেস চেক করার সময় আমি নতুনভাবে তৈরি টেবিলটি দেখতে পাচ্ছি এবং রোলব্যাকের পরে এটি উপস্থিত রয়েছে এটি রোলব্যাকের পরে উপস্থিত রয়েছে ।
অপারেশনগুলির লগ এখানে:
[2015-01-19 14:08:11] DEBUG: "START TRANSACTION" [] []
[2015-01-19 14:08:11] DEBUG: SHOW TABLES LIKE :table_name; [] []
[2015-01-19 14:08:28] DEBUG: CREATE TABLE `customers__20150119_14_08_20` LIKE `customers` [] []
[2015-01-19 14:08:37] DEBUG: INSERT INTO `customers__20150119_14_08_20` SELECT * FROM `customers` [] []
[2015-01-19 14:08:50] DEBUG: "ROLLBACK" [] []
সুতরাং আমি অবাক হয়েছি কেন Depsite ROLLBACK
বলা হয়, লেনদেন বাতিল হয় না। আমি বুঝতে পারি যে CREATE TABLE
এটি লেনদেনের প্রকৃতির নয় এবং এগুলি আবার ঘুরিয়ে দেওয়া যায় না। তবে আমি তা ধরেই নিছিলামINSERT INTO
ধরেই নিয়েছিলাম এটি সারি সন্নিবেশ করানোর (স্কিমাটি সংজ্ঞায়িত না করার) সাথে সম্পর্কিত, আসলে বাস্তবে লেনদেন হবে এবং রোলব্যাকের পরে আমি খালি গন্তব্য টেবিলটি রেখে দেব। এটা কেন হয় না?
এবং এখানে আউটপুট SHOW CREATE TABLE customers
(সুতরাং আমার টেবিলটি InnoDb
):
CREATE TABLE `customers` (
`Code` varchar(32) NOT NULL,
`Name` varchar(128) DEFAULT NULL,
`Price` varchar(128) DEFAULT NULL,
PRIMARY KEY (`Code`),
KEY `Price` (`Price`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
এবং এখানে বর্ণনামূলক টেবিলের জন্য আউটপুট:
CREATE TABLE `customers__20150119_14_08_20` (
`Code` varchar(32) NOT NULL,
`Name` varchar(128) DEFAULT NULL,
`Price` varchar(128) DEFAULT NULL,
PRIMARY KEY (`Code`),
KEY `Price` (`Price`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
create table
, তারপরstart transaction, insert, rollback
?