首页 > 解决方案 > Liquibase 运行 sqlFile 更改两次

问题描述

出于某种原因,Liquibase 运行了两次 sql 文件,我不明白为什么:

2021-05-04 12:17:50.341  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @role_org_viewer_id = (SELECT id FROM auth_roles WHERE name='org_viewer')
2021-05-04 12:17:50.341  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @role_domain_viewer_id = (SELECT id FROM auth_roles WHERE name='domain_viewer')
2021-05-04 12:17:50.341  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @role_domain_editor_id = (SELECT id FROM auth_roles WHERE name='domain_editor')
2021-05-04 12:17:50.342  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @role_domain_manager_id = (SELECT id FROM auth_roles WHERE name='domain_manager')
2021-05-04 12:17:50.342  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @role_ep_admin = (SELECT id FROM auth_roles WHERE name='ep_admin')
2021-05-04 12:17:50.342  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_user_read_id = (SELECT id FROM auth_permissions WHERE resource_type='user' AND action='read')
2021-05-04 12:17:50.343  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_role_read_id = (SELECT id FROM auth_permissions WHERE resource_type='role' AND action='read')
2021-05-04 12:17:50.343  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_catalog_screen_view_id = (SELECT id FROM auth_permissions WHERE resource_type='catalog_screen' AND action='view')
2021-05-04 12:17:50.343  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_api_products_screen_view_id = (SELECT id FROM auth_permissions WHERE resource_type='api_products_screen' AND action='view')
2021-05-04 12:17:50.344  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_api_product_read_id = (SELECT id FROM auth_permissions WHERE resource_type='api_product' AND action='read')
2021-05-04 12:17:50.344  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_shared_schema_read_id = (SELECT id FROM auth_permissions WHERE resource_type='shared_schema' AND action='read')
2021-05-04 12:17:50.344  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @perm_shared_event_read_id = (SELECT id FROM auth_permissions WHERE resource_type='shared_event' AND action='read')
2021-05-04 12:17:50.345  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_user_read_id)
2021-05-04 12:17:50.345  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_role_read_id)
2021-05-04 12:17:50.346  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_catalog_screen_view_id)
2021-05-04 12:17:50.346  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_api_products_screen_view_id)
2021-05-04 12:17:50.346  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_api_product_read_id)
2021-05-04 12:17:50.346  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_shared_schema_read_id)
2021-05-04 12:17:50.346  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_shared_event_read_id)
2021-05-04 12:17:50.347  INFO [] 15667 --- [           main] liquibase.changelog.ChangeSet            : SQL in file sqlFiles/003_insert_roles_to_permissions_assn.sql executed
2021-05-04 12:17:50.347  INFO [] 15667 --- [           main] liquibase.changelog.ChangeSet            : ChangeSet db/changesets/206_insert_into_roles_to_permissions_assn.json::DATAGO-XXX-7::imochurad ran successfully in 9ms
2021-05-04 12:17:50.347  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : INSERT INTO maas.DATABASECHANGELOG (ID, AUTHOR, FILENAME, DATEEXECUTED, ORDEREXECUTED, MD5SUM, `DESCRIPTION`, COMMENTS, EXECTYPE, CONTEXTS, LABELS, LIQUIBASE, DEPLOYMENT_ID) VALUES ('DATAGO-XXX-7', 'imochurad', 'db/changesets/206_insert_into_roles_to_permissions_assn.json', NOW(), 173, '8:92cdcc74836d90921bd449bc56db79e9', 'sqlFile', 'DATAGO-XXX: Fine-grained RBAC', 'EXECUTED', NULL, NULL, '3.8.9', '0145070044')
2021-05-04 12:17:50.350  INFO [] 15667 --- [           main] liquibase.executor.jvm.JdbcExecutor      : SET @role_org_viewer_id = (SELECT id FROM auth_roles WHERE name='org_viewer');
SET @role_domain_viewer_id = (SELECT id FROM auth_roles WHERE name='domain_viewer');
SET @role_domain_editor_id = (SELECT id FROM auth_roles WHERE name='domain_editor');
SET @role_domain_manager_id = (SELECT id FROM auth_roles WHERE name='domain_manager');
SET @role_ep_admin = (SELECT id FROM auth_roles WHERE name='ep_admin');

SET @perm_user_read_id = (SELECT id FROM auth_permissions WHERE resource_type='user' AND action='read');

SET @perm_role_read_id = (SELECT id FROM auth_permissions WHERE resource_type='role' AND action='read');

SET @perm_catalog_screen_view_id = (SELECT id FROM auth_permissions WHERE resource_type='catalog_screen' AND action='view');

SET @perm_api_products_screen_view_id = (SELECT id FROM auth_permissions WHERE resource_type='api_products_screen' AND action='view');

SET @perm_api_product_read_id = (SELECT id FROM auth_permissions WHERE resource_type='api_product' AND action='read');

SET @perm_shared_schema_read_id = (SELECT id FROM auth_permissions WHERE resource_type='shared_schema' AND action='read');

SET @perm_shared_event_read_id = (SELECT id FROM auth_permissions WHERE resource_type='shared_event' AND action='read');

INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_user_read_id);
INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_role_read_id);
INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_catalog_screen_view_id);
INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_api_products_screen_view_id);
INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_api_product_read_id);
INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_shared_schema_read_id);
INSERT INTO auth_roles_to_permissions_assn (role_id, permission_id) VALUES (@role_org_viewer_id, @perm_shared_event_read_id);
2021-05-04 12:17:50.353 ERROR [] 15667 --- [           main] liquibase.changelog.ChangeSet            : Change Set db/changesets/sqlFiles/003_insert_roles_to_permissions_assn.sql::raw::includeAll failed.  Error: (conn=104) Duplicate entry '89711431716-89711431721' for key 'PRIMARY' [Failed SQL: (1062) SET @role_org_viewer_id = (SELECT id FROM auth_roles WHERE name='org_viewer');

我有一个 sqlFiles 文件夹,其中列出了我在更改日志中引用的一些文件。正如您从日志中看到的那样,这个 SQL 文件被应用了两次,一次是通过 changelog 文件,它被标记为 EXECUTED,然后再次运行。

知道为什么会这样吗?

标签: liquibase

解决方案


好的,问题是该文件夹sqlFiles在下面 "path": "classpath:/db/changesets",导致它两次运行相同的 SQL 文件。一次来自变更日志,一次作为独立的 SQL 文件。


推荐阅读