PyCharm 跟踪您对将源代码存储在数据库中的对象所做的更改。这些对象可能是触发器、过程、函数、视图或其他对象。您在编辑器中对这些对象所做的每一次修改都会保存为对象源代码的本地版本。
数据库更改工具窗口显示所有更改的摘要。
选择查看 | 工具窗口 | 主菜单中的数据库更改。
笔记
只有在您更改对象的源代码后,数据库更改工具窗口才可用。
右键单击一个对象并选择Go to DDL。或者,按Ctrl+B。
对源代码进行更改。
(可选)在Database Changes工具窗口(View | Tool Windows | Database Changes)中,双击修改后的对象以打开差异查看器并验证您的更改。
单击提交( )。
当您在数据库更改工具窗口中按下提交按钮 ( ) 时,您会看到迁移对话框。迁移对话框显示对象的迁移脚本。
在Object Migration对话框中,验证迁移脚本是否正确,然后按OK。
迁移脚本是更改所有数据库或其中一部分的代码。您可以使用迁移脚本来添加或删除列、升级数据库版本或更改列属性。
PyCharm 可以自动生成迁移脚本,但运行前必须检查。
在数据库工具窗口中,双击修改后的数据库对象。
当您编辑任何对象的源代码时,PyCharm 会跟踪更改并在装订线中突出显示它们。例如,向例程或触发器函数添加注释行。添加的行将突出显示。如果单击装订线中突出显示的行,则会显示一个带有“显示差异”按钮的小工具栏。您可以单击“显示差异”按钮 ( ) 以查看您添加的代码与源代码中的代码之间的差异。
在Database Changes工具窗口(View | Tool Windows | Database Changes)中,双击修改后的对象以打开差异查看器并验证您的更改。
在数据库工具窗口(查看 | 工具窗口 | 数据库)中,单击数据源属性图标。
选择一个或多个要下载源代码的数据源。
右键单击选择并导航到Load Sources。您可以在以下选项之间进行选择:
无:不下载源代码。
系统模式除外:下载系统模式以外的所有对象的源代码。
所有模式:下载所有可用的源代码。
迁移是将数据从一个对象移动到另一个对象(例如,从一个模式到另一个模式)的过程。在 PyCharm 中,这些对象称为Origin和Target。生成迁移脚本以使Target等于Origin。但是您可以修改脚本以满足您的要求。
在数据库工具窗口(视图|工具窗口|数据库)中,选择两个相同类型的对象。例如,两个模式。
右键单击选择并导航到Compare。或者,按Ctrl+D。
在脚本预览选项卡中生成一组可用于编写迁移脚本的语句。
在数据库工具窗口(视图|工具窗口|数据库)中,选择两个相同类型的对象。例如,两个模式。
右键单击选择并导航到Compare。或者,按Ctrl+D。
在“脚本预览”选项卡中,验证迁移脚本是否正确。
单击执行。或者,单击在控制台中打开查询以在查询控制台中打开所有脚本。
在“迁移”对话框中,单击“源”或“目标”字段中的项目。
单击对象属性差异选项卡。
在“迁移”对话框中,单击“源”或“目标”字段中的项目。
单击DDL 差异选项卡。
要排除更改,请单击清除更改的复选框。
要排除所有更改,请单击目标标签附近的复选框。
要包括所有已排除的更改,请单击目标标签附近的复选框。
要显示Origin和Target对象中相同的所有项目,请选中Show same复选框。
PyCharm 缓存数据库中所有对象的源代码,以提供快速的代码帮助和导航。如果您打开的对象是从第三方位置更新的,您将看到缓存对象与数据库中同一对象的源代码不同的通知。
如果您在 IDE 中看到此警告,您可以在以下操作之间进行选择:
同步:从数据库中获取更改并更新缓存的本地对象。
禁用检查:禁用此通知。
此外,您的对象源代码版本与数据库中的版本之间可能存在冲突。例如,当您修改了与其他人相同的源代码并按下了提交( Ctrl+K) 时。
您可以强制替换数据库中对象的源代码(强制重构)或同步对象状态然后继续更改(中止重构和同步)。
如果您选择了Abort Refactoring 和 Synchronize,PyCharm 将中止提交操作并从数据库中获取更改(就像您按下Synchronize Ctrl+F5一样)。如果冲突仍然存在,您将看到以下通知。
在此通知中,您可以选择以下选项:
还原本地更改:回滚所有更改并将其替换为数据库中的版本。
保留本地更改:使用您的更改并覆盖数据库中的更改。
合并:显示差异对话框以合并两个版本的对象源代码。
默认情况下,所有对象都显示为黑色。这意味着对象源代码的当前状态与服务器上同一对象的源代码没有区别。
如果对象的源代码已更改,但与服务器上的对象源代码没有冲突,则该对象显示为蓝色。
如果本地对象的源代码与服务器上的同一对象存在冲突,则该对象显示为红色。如果您在编辑器中打开此类对象,您将看到有关冲突的通知。
例如,在下面的屏幕截图中,Do_Something
过程被修改但不包含冲突,V1_trg_i
触发器被修改并且与服务器上相同触发器的源发生冲突,其他对象没有被修改。
物品 | 捷径 | 描述 |
---|---|---|
提交 | Ctrl+Enter | 将本地更改提交到数据库服务器。请参阅提交对数据库的更改。 |
回滚 | 回滚更改。此按钮仅适用于手动交易模式。 | |
| Ctrl+D | 比较两个版本的源代码。 |
| Ctrl+D | 根据对象的类型对对象进行分组。例如,例程、规则或视图。 |
Ctrl+NumPad + | 展开所有树中的所有节点。 | |
Ctrl+NumPad - | 折叠所有树中的所有节点。 |