webstorm 运行 sql 迁移脚本的核心动作是右键文件选择“run sql script...”,需确保已配置带绿色圆点的数据源,脚本开头结尾建议加状态标识语句,避免 use/set search_path 等会话级命令,并显式编写事务控制以保障原子性。

WebStorm 本身不执行数据库迁移逻辑,它只负责把你的 .sql 脚本发给数据库执行。迁移是否成功,取决于脚本内容、目标库状态和连接权限。
怎么运行一个 .sql 迁移脚本
核心动作是「右键 → 运行 SQL 脚本」,不是双击打开或拖进控制台手动粘贴。
- 确保已配置好数据源(
Database工具窗口里有带绿色圆点的连接) - 在项目中找到你的
migration_v2.1.sql文件(或任意.sql文件) - 右键该文件 → 选择
Run SQL Script...(不是Execute Statement) - 弹出对话框中,确认目标数据源和 schema 已选中(尤其注意:如果脚本含
CREATE TABLE,必须指定 schema) - 点击
OK,结果会出现在Run工具窗口,含执行时间、影响行数、错误堆栈
为什么脚本执行失败但没报错
常见于脚本里用了分号分隔多条语句,而 WebStorm 默认按「单语句模式」执行 —— 它只取光标所在位置的语句,或第一个 ; 前的内容。
- 检查脚本开头是否有
SET autocommit = 0;或BEGIN TRANSACTION;:这类语句 WebStorm 不识别为可执行语句,直接跳过 - 避免用
--注释跨多行,某些驱动会截断解析;改用/* */ - PostgreSQL 用户注意:
DO $$ ... $$块必须整块选中再执行,不能靠右键菜单自动识别 - 如果脚本含
CREATE OR REPLACE FUNCTION,请确保当前用户有CREATE权限,否则静默失败(Run窗口只显示「0 rows affected」)
如何让迁移脚本更可靠地运行
关键不是加更多语法糖,而是控制执行上下文和反馈粒度。
- 每个迁移脚本开头加上
SELECT 'START migration_v2.1' AS status;,结尾加SELECT 'END migration_v2.1' AS status;,便于定位卡在哪一步 - 避免在脚本中写
USE database_name;(MySQL)或SET SEARCH_PATH(PostgreSQL):WebStorm 不保证 session 级变量传递,应统一在数据源设置里指定默认 schema - 大脚本(>5MB)不要直接右键运行,先在
Query Console中分段粘贴测试;否则可能因内存不足导致 IDE 卡死或连接超时 - 生产环境迁移前,务必勾选数据源设置里的
Read-only模式,防止误操作;执行时再临时取消
最容易被忽略的是:WebStorm 的「运行 SQL 脚本」功能不会自动开启事务,也不会回滚失败语句。如果你的脚本依赖原子性(比如先删表再建表),必须显式写 BEGIN; ... COMMIT; 或 START TRANSACTION; ... ROLLBACK;,且确认目标数据库支持该语法。











