数据库同步过程与冲突详解

在线网址:

https://www.syncnavigator.cn/chm/index.htm

 

官网下载:https://www.syncnavigator.cn

创建第一个同步项目


使用 HKROnline SyncNavigator 创建一个数据库同步项目。只需要通过简单的配置,创建完成后您可以随时执行数据库同步任务。

1. 点击 "SyncNavigator(Client)" 图标进入系统。

2. 在登录界面中输入连接到的服务器地址,点击 "确定" 按钮开始连接。

  • 注意:这里不是登陆您的数据库,而是登陆到本软件的管理端。
  • 默认情况下直接点击 "连接" 按钮即可(本机默认已经安装)。
  • 默认服务器登录用户名为 "admin" 密码为空。
  • 本机服务器地址 = 127.0.0.1 。
  • 您可以使用域名或者IP地址作为服务器地址。如果指定了端口号可以使用 IP:Port 方式填写。

3. 切换到 "同步管理" 面板中点击 "新建" 按钮开始创建同步项目。


4. 首先切换到 "来源数据库" 选项卡。填写同步的来源数据库信息。 

  • 一般情况下只需要输入数据库地址,数据库名称,登录用户名,登录密码。

  • 数据库地址: 连接到的数据库地址。可以是域名或者IP地址。如果指定了端口号可以使用 IP:Port 方式填写。
  • 数据库名称: 使用的数据库名称。如果已经指定了默认的登录数据库可以为空。
  • 登录用户名: 登录数据库服务器使用的用户名。如果需要使用Windows账户登录请变更 "登录方式"
  • 连接测试: 测试输入的信息是否正确。如果连接失败则会返回具体错误信息。

 

5. 切换到 "目标数据库" 选项卡。以相同的方式填写同步的目标数据库。 

  • 您只需要创建一个新的目标数据库,软件会自动创建最大兼容的表结构。

  • 如果您希望目标数据库与来源数据库表结构完全一致,您只需要在目标数据库创建一个空表结构即可。
  • 当您使用 MySQL 作为来源数据库时,同步的表至少需要一个主键。
  • 目标数据库不应包含外键约束,因为它可能导致部分数据无法同步。
  • 如果您的目标数据库与来源数据库结构(如字段类型,约束)不兼容,这可能导致部分数据无法同步。
  • 假设您设置来源库为 192.168.1.2 ,设置目标数据库为 192.168.1.3, 那么数据将从192.168.1.2 同步到 192.168.1.3。如果您的方向设置错误,可能会导致数据被覆盖。

6. 切换到 "同步内容设置" 选项卡。选择需要同步的数据库表。

  • 如果需要设置每个表的具体内容可以点击 "详细设置" 按钮进行调整。

  • 您可以设置条件过滤。比如只查询评分大于90的表记录,或者隐藏不需要同步的字段。
  • 如果在这一个步骤未勾选任何表则不会同步任何内容。

A.数据库同步过程
1.python manage.py makemigrations
每次使用makemigrations后就会在对应app/makemigrations目录下生成类似下面这样的迁移脚本:

迁移脚本内容大致是由两部分组成,依赖列表、操作列表。

 

2.python manage.py migrate
migrate命令会在django_migrations表中插入迁移记录,然后执行sql语句。

 

B.冲突解决办法
原因:执行migrate命令会报错的原因是,数据库的django_migrations表中迁移记录和代码中的迁移脚本不一致

 

解决办法:

1.保持Model表中的数据和数据库中现有的字段保持一致,然后删除掉所有migrations包中除__init__.py的.py文件和migrations表中的数据然后执行命令。(暴力)

2.使用migrate --fake:

将项目中所有未迁移的变动文件进行迁移(django会去查询django_migrations表判断你是否有新的迁移变动),但不会执行SQL语句。(比如表已经存在的错误,就可以用这个方法)
————————————————
 

你可能感兴趣的:(数据库同步过程与冲突详解)