pyquibase错误:subprocess.CalledProcessError

问题描述 投票:1回答:1

我使用python,我想创建一个像liquibase这样的数据库源控制器。我发现liquibase的python版本调用pyquibase但得到subprocess.CalledProcessError

这是我的简单代码:

from pyquibase.pyquibase import Pyquibase

if __name__ == '__main__':
    pyquibase = Pyquibase.sqlite('test.sqlite', 'db-changelog-1.xml')
    pyquibase.update()

我收到了这些错误:

Traceback (most recent call last):
  File "/home/ali/dev/project/python/DatabaseSourceContoller/DatabaseSourceContoller/main.py", line 5, in <module>
    pyquibase.update()
  File "/home/ali/dev/project/python/DatabaseSourceContoller/venv/lib/python3.5/site-packages/pyquibase/pyquibase.py", line 69, in update
    output = self.liquibase.execute(self.change_log_file, "update")
  File "/home/ali/dev/project/python/DatabaseSourceContoller/venv/lib/python3.5/site-packages/pyquibase/liquibase_executor.py", line 103, in execute
    shell  = True
  File "/usr/lib/python3.5/subprocess.py", line 316, in check_output
    **kwargs).stdout
  File "/usr/lib/python3.5/subprocess.py", line 398, in run
    output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command 'java -jar /home/ali/dev/project/python/DatabaseSourceContoller/venv/lib/python3.5/site-packages/pyquibase/liquibase/liquibase.jar     --driver=org.sqlite.JDBC     --classpath=/home/ali/dev/project/python/DatabaseSourceContoller/venv/lib/python3.5/site-packages/pyquibase/db-connectors/sqlite-jdbc-3.18.0.jar     --changeLogFile=db-changelog-1.xml     --url="jdbc:sqlite:test.sqlite" update' returned non-zero exit status 255
python sqlite
1个回答
1
投票

pyquibase分叉子进程执行liquibase changelog更新。而subprocess.CalledProcessError意味着liquibase更改日志更新失败。

现在,为了找出失败的原因,您可以手动运行liquibase命令以查看实际的错误消息:

java -jar /home/ali/dev/project/python/DatabaseSourceContoller/venv/lib/python3.5/site-packages/pyquibase/liquibase/liquibase.jar --driver=org.sqlite.JDBC --classpath=/home/ali/dev/project/python/DatabaseSourceContoller/venv/lib/python3.5/site-packages/pyquibase/db-connectors/sqlite-jdbc-3.18.0.jar --changeLogFile=db-changelog-1.xml --url="jdbc:sqlite:test.sqlite" update

pyquibase不会为您打印实际的错误消息。下一版本升级应该具有该功能。

© www.soinside.com 2019 - 2024. All rights reserved.