Navicat在结构同步时的注意事项
涉及到列名修改时,不要使用Navicat结构同步工具
- 本地环境的表结构如下
id | phone | invite_code |
---|---|---|
1 | 123-456-789 | ABC123 |
2 | 987-654-321 | DEF456 |
3 | 555-555-555 | GHI789 |
- 生产环境的表结构如下
id | phone | user_id |
---|---|---|
1 | 123-456-789 | ABC123 |
2 | 987-654-321 | DEF456 |
3 | 555-555-555 | GHI789 |
若此时使用Navicat提供的结构同步工具,实际上执行的命令会是将原有的列删除,然后再新增,会导致该列的内容完全丢失
1
2
3
4
5
6
7ALTER TABLE `user_info` DROP COLUMN `invite_code`;
ALTER TABLE `user_info` DROP INDEX `idx_invite_code`;
ALTER TABLE `user_info` ADD COLUMN `user_id` varchar(255) AFTER `phone`;
ALTER TABLE `user_info` ADD INDEX `idx_invite_code`(`user_id` ASC) USING BTREE;若仅修改字段名,建议使用RENAME命令
1
2ALTER TABLE user_info
RENAME COLUMN invite_code TO user_id- 若还涉及到字段定义修改,建议使用CHANGE COLUMN命令
1
2ALTER TABLE user_info
CHANGE COLUMN invite_code user_id VARCHAR(50)
评论