Ant*_*ony 5 mysql merge synchronization primary-key navicat
我在开发和生产环境 MySQL 数据库方面遇到问题。我想合并 2 个数据库,但由于内容作者一直在向生产环境添加记录,因此大约有 20 个具有相同主键的重叠记录。
我使用 Navicat 进行数据同步,但它只是用我的开发服务器中的记录更新生产服务器上的记录。主键没有任何意义,我想做的是为这些记录提供新的主键。
通过 Navicat 可以实现吗?如果没有,手动进入数据库并更改主键会是一个坏主意吗?或者说这会影响MySQL的自增能力吗?
谢谢。
我无法回答 Navicat 的功能,但在 MySQL 中,您可以轻松设置 auto_increment 值。如果是实时数据,我建议在事务中完成整个操作:
START TRANSACTION;
SELECT max(id)+1 INTO @new_id FROM mytable;
SET @range_start = [first ID you'd like to change];
SET @range_end = [last ID you'd like to change];
SET @offset = @new_id - @range_start;
UPDATE mytable SET id = id + @offset WHERE id BETWEEN @range_start AND @range_end;
SELECT @range_end + @offset + 1;
ALTER TABLE mytable AUTO_INCREMENT=[value returned by above statement];
COMMIT;
Run Code Online (Sandbox Code Playgroud)
注意——该ALTER TABLE语句需要一个常量而不是使用变量。
| 归档时间: |
|
| 查看次数: |
1031 次 |
| 最近记录: |