数据库对象的差异查看器
在 PhpStorm 中,您可以比较数据库对象和表、视图和物化视图的输出。
比较数据库对象
差异查看器向您显示两个数据库对象之间的差异和相似之处:Origin和Target。生成迁移脚本以使Target等于Origin。
在 PhpStorm 中,您可以比较两个相同类型的数据库对象。例如,您可以比较两个模式、两个表或两个例程。PhpStorm 向您展示了这两个对象的结构差异。

对于更改,PhpStorm 使用以下颜色编码。
颜色 | 描述 |
---|---|
在Origin中添加的对象,在成功迁移的情况下将在Target中创建。 | |
修改的对象,将在Target中更改。 | |
在Origin中删除的对象,如果迁移成功,将在Target中删除。 |
请参阅参考部分中对对话框控件的描述。
在数据库工具窗口( )中,选择两个相同类型的对象。例如,两个模式。
右键单击选择并导航到Compare。或者,按Ctrl+D。
在脚本预览选项卡中生成一组可用于编写迁移脚本的语句。
在对象之间迁移更改
在数据库工具窗口( )中,选择两个相同类型的对象。例如,两个模式。
右键单击选择并导航到Compare。或者,按Ctrl+D。
在“脚本预览”选项卡中,验证迁移脚本是否正确。
单击执行。或者,单击在控制台中打开查询以在查询控制台中打开所有脚本。
在表格中显示更改之间的差异
在“迁移”对话框中,单击“源”或“目标”字段中的项目。
单击对象属性差异选项卡。
显示 DDL 更改之间的差异
在“迁移”对话框中,单击“源”或“目标”字段中的项目。
单击DDL 差异选项卡。
选择要迁移的更改
要排除更改,请单击清除更改的复选框。
要排除所有更改,请单击目标标签附近的复选框。
要包括所有已排除的更改,请单击目标标签附近的复选框。
显示相同的项目
要显示Origin和Target对象中相同的所有项目,请选中Show same复选框。
比较表、物化视图和视图的内容
比较内容操作比较表、视图和实体化视图的输出。要查找此操作,请在“数据库”工具窗口( )中选择两个对象,然后右键单击所选内容。此外,您可以双击这些对象,然后从编辑器中比较它们。
您可以比较属于不同类型的两个对象的内容。例如,表格和物化视图的输出。

容差和检测列插入的描述在内容差异查看器的控件中可用。
默认情况下,当您发出查询时,返回的行数限制为 500。引入此限制是为了避免过载(例如,当您的 SELECT 语句返回一百万行时)。要增加比较的行数,请配置将页面大小限制为参数。
从数据库工具窗口比较两个表的内容
默认情况下,当您发出查询时,返回的行数限制为 500。引入此限制是为了避免过载(例如,当您的 SELECT 语句返回一百万行时)。要增加比较的行数,请配置Limit page size to 参数。
在数据库工具窗口( )中,选择两个表。
右键单击选择并导航到比较内容。
如果需要,在比较对话框中更改公差参数的值。Tolerance参数定义了两个结果集之间允许的最大差异数。例如,如果您想在单列中的数据不同时将两行视为相等,请
1
在“容差”字段中输入。
从数据编辑器比较两个表的内容
打开两个要比较的表。要打开一个表,请在“数据库”工具窗口中双击它。
在编辑器中,单击比较内容按钮 (
) 并选择第二个表。
控制数据库对象的差异查看器
图标 | 工具提示和快捷方式 | 描述 |
---|---|---|
展开全部 | 展开所有折叠的节点。 | |
全部收缩 | 折叠所有展开的节点。 | |
选项 | 根据不同的变化选择选项。如果选择了该选项,则该选项中提到的属性将在 diff 中被忽略。
| |
包括更改 | 应用选定的更改。 | |
显示相同 | 显示所有相同的项目。 |
DDL Diff 的控制
物品 | 工具提示和快捷方式 | 描述 |
---|---|---|
| 上一个差异/下一个差异 Shift+F7/F7 | 跳转到下一个或上一个差异。 |
跳转到源 F4 | 在编辑器的活动窗格中打开选定对象的定义。插入符号放置在与差异查看器中相同的位置。 | |
并排查看器 | 选择查看器模式:并排查看器或统一查看器。并排模式有两个面板,统一模式有一个面板。 | |
空格 | 定义差异查看器应如何处理空格。
| |
高亮模式 | 选择突出显示差异的方式。 可用的选项有:
| |
设置 | 选择在比较期间要忽略的选项。
![]() | |
帮助 F1 | 打开浏览器并显示相应的帮助页面。 |
内容差异查看器的控件
在内容的差异查看器中,您可以使用数据编辑器中提供的相同排序功能。有关对列进行排序的详细信息,请参阅对数据进行排序。
检测列插入
当表具有不同的列数时,将忽略表中具有更多列的额外列。如果启用了检测列插入选项,则会忽略大多数不同的列。在下图中,第二个表中的第一列差异最大,因此被忽略。结果,第二行显示为包含相同的数据。

如果该选项关闭,则忽略最后一列。在下图中,第二个表中的最后一列被忽略。因此,所有行都显示为包含不同的数据。

宽容
Tolerance参数定义了在考虑两行相等时可能有多少列不同。例如,如果您将Tolerance设置为 1,则在一列中不同的行被视为相等。

容差设置为零时,此类行被视为不同。

使用此设置,您还可以在行中的数据不同时检查不同的列。这些列中的此类行被突出显示。如果您有不止一行的不同数据,请增加容差选项。例如,将Tolerance设置为1
,您可以看到两个表之间只有last_name
列不同。
