mysql - mysql alter 命令可能导致数据丢失?

标签 mysql

虽然我不认为数据丢失是可能的,但我想仔细检查以下查询是否会导致数据丢失。我正在添加索引并增加 varchar 长度。

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;

最佳答案

不管怎样,都应该对比一下手术前后的数据。

改变前做mysqldump --extended-insert=FALSE ... > old.sql,改变后做同样的> new.sql,然后diff -u old.sql new.sql |更少可以肯定。

extended-insert=FALSE 部分需要将每个表行放在单独的行上,以便于diff

关于mysql - mysql alter 命令可能导致数据丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6709143/

相关文章:

php - 什么时候应该使用存储过程或函数?

mysql - 转换Mysql中的查询

mysql - Node orm2 套接字集成

php - 将上传图像的文件路径保存到 MySQL 数据库

php - 从其他表添加数据到表单+ Symfony2

mysql - 从两个表中选择并更新第三个表

php - 如何在 SQL 中的代码点火器中应用 2 OR 和 1 AND 条件?

mysql - 如何使用 JPA 在 Hibernate 中的多个列表中存储相同的实体

mysql 选择 id 不在

mysql - 尝试使用 MySQL ADO.NET 驱动程序连接到数据库时,Visual Studio 2010 从数据库生成模型时出现错误消息,如何解决?