目前我正在尝试截断在 Postgresql 11.3 上有外键约束的表。
我试过这样做
BEGIN;
SET CONSTRAINTS ALL DEFERRED;
TRUNCATE tableA;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
但收到错误
ERROR: cannot truncate a table referenced in a foreign key constraint
DETAIL: Table "xxx" references "tableA".
HINT: Truncate table "xxx" at the same time, or use TRUNCATE ... CASCADE.
Run Code Online (Sandbox Code Playgroud)
不会SET CONSTRAINTS ALL DEFERRED关闭外键约束检查吗?无论如何要在不触发外键约束检查且不涉及 CASCADE 的情况下截断表?
使用时strace -T -tt -o outputfile myprogram,输出就像
16:14:37.576804 write(1, "EFFEEFFFEFFGGEEFEEFECEEDB"..., 4096) = 4096 <0.000014>
16:14:37.577121 write(1, ",...,,,.\tDEDEEDEDEEBDEEFECECFBEE"..., 4096) = 4096 <0.000015>
16:14:37.577434 write(1, "66098\tT\t41\t....,.....,,,.,,,,..."..., 4096) = 4096 <0.000016>
Run Code Online (Sandbox Code Playgroud)
第一列是系统调用的开始时间还是结束时间?正如给定的-T,最后一列给出为“显示系统调用所花费的时间。这记录了每个系统调用开始和结束之间的时间差。” 为什么它与两次写入调用之间的时间间隔不同?作为前两个,16:14:37.577121 - 16:14:37.576804=0.000317 > 0.000014.
当我尝试通过运行角色并将其委托给主机 2(下面的代码)来执行以下剧本时,include_role 和 delegate_to 是否可以在 Ansible 2.9 中协同工作?
Ansible 手册
- name: top level playbook
hosts: ["host1", "host2"]
connection: local
gather_facts: true
ignore_errors: no
tasks:
- set_fact:
playbook_dir: /Users/OneDrive
validation_overall: 'pass'
result: {}
all_hosts: "{{ ansible_play_hosts }}"
- name: import hostvars
include_vars:
dir: '{{ playbook_dir }}/test_env_vars/hostvars'
files_matching: '{{ inventory_hostname }}.*'
- name: initialise required input variables
set_fact:
input_interfaces: "{{ e_input_interfaces }}"
# delegate role to host2
- name: "call validate_rtr_state role with host '{{ansible_hostname}}' for hosts in '{{ansible_play_hosts}}'"
include_role:
name: …Run Code Online (Sandbox Code Playgroud) 不知道如何实现这个逻辑,我知道如何在单个文件中实现它:
- name: Obtain information about a file
win_stat:
path: "C:\myfile.txt"
register: fileinfo
- [...]
when: fileinfo.exists == False
Run Code Online (Sandbox Code Playgroud)
我应该如何处理文件列表?