2011-07-15 9 views
1

私はデータの損失は考えられませんが、次のクエリでデータが失われる可能性があるかどうかを再確認したいと思います。私はインデックスを追加し、varcharの長さを増やしています。いずれの場合においてもmysql alterコマンドでデータが失われる可能性はありますか?

ALTER TABLE `phppos_sales` ADD `deleted` INT(1) NOT NULL DEFAULT '0'; 
ALTER TABLE `phppos_items` ADD INDEX ( `name`); 
ALTER TABLE `phppos_items` ADD INDEX ( `category`); 
ALTER TABLE `phppos_items` ADD INDEX ( `deleted`); 
ALTER TABLE `phppos_customers` ADD INDEX ( `deleted`); 
ALTER TABLE `phppos_employees` ADD INDEX ( `deleted`); 
ALTER TABLE `phppos_giftcards` ADD INDEX ( `deleted`); 
ALTER TABLE `phppos_item_kits` ADD INDEX ( `name`); 
ALTER TABLE `phppos_people` ADD INDEX ( `first_name`); 
ALTER TABLE `phppos_people` ADD INDEX ( `last_name`); 
ALTER TABLE `phppos_people` ADD INDEX ( `email`); 
ALTER TABLE `phppos_sales` ADD INDEX ( `deleted`); 
ALTER TABLE `phppos_suppliers` ADD INDEX ( `deleted`); 
ALTER TABLE `phppos_receivings` CHANGE `payment_type` `payment_type` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_receivings_items` CHANGE `description` `description` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_receivings_items` CHANGE `serialnumber` `serialnumber` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_sales` CHANGE `payment_type` `payment_type` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_sales_suspended` CHANGE `payment_type` `payment_type` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_giftcards` CHANGE `giftcard_number` `giftcard_number` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL; 
ALTER TABLE `phppos_sales_items` CHANGE `description` `description` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_sales_items` CHANGE `serialnumber` `serialnumber` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_sales_suspended_items` CHANGE `description` `description` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_sales_suspended_items` CHANGE `serialnumber` `serialnumber` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NULL DEFAULT NULL; 
ALTER TABLE `phppos_sales_suspended_payments` CHANGE `payment_type` `payment_type` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL; 
ALTER TABLE `phppos_sales_payments` CHANGE `payment_type` `payment_type` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL; 

答えて

1

、あなたは操作の前と後のデータを比較する必要があります。

変更前はmysqldump --extended-insert=FALSE ... > old.sql、変更後は同じ> new.sql、その後はdiff -u old.sql new.sql | lessとなります。

diff 'を簡単にするために、すべてのテーブル行を別の行に配置するには、extended-insert=FALSE部分が必要です。

関連する問題