gpt4 book ai didi

perl - Sqlite 无法使用 Mojolicious 和 Par Packer 找到数据库文件

转载 作者:行者123 更新时间:2023-12-03 14:59:47 30 4
gpt4 key购买 nike

我正在用 Perl 编写一个使用 Mojolicious 和 Sqlite 的程序。我将使用 Par Packer 将其作为 .exe 文件分发,以便在其他 Windows 机器上进行部署。

我在 Windows 上使用 Strawberry Perl 进行开发。

我将以下 Windows 批处理文件与 Par Packer 一起使用来生成 .exe 文件:

pp -o hallo.exe ^
-x ^
-l libeay32__.dll ^
-l zlib1__.dll ^
-l ssleay32__.dll ^
-a lib ^
-a public ^
-a templates ^
-a "C:\strawberry\perl\site\lib\Mojo\entities.txt;Mojo\entities.txt" ^
-a "C:\Strawberry\perl\vendor\lib\Mojolicious\resources\public;Mojolicious\public" ^
-a "C:\Strawberry\perl\vendor\lib\Mojolicious\resources\templates;Mojolicious\templates" ^
-a "D:\Perl\main.db" ^
hallo.cgi

上面的工作完美,但是一旦我引入 SQLite,我在尝试运行 hello.exe 时遇到以下错误:
DBD::SQLite::db prepare failed: no such table: libraries

hallo.cgi 正常运行时工作正常。例如 perl hallo.cgi。但是当所有东西都编译成 .exe 文件时,就会发生 Sqlite 错误。

这里发生的是 main.db(一个 SQL lite 数据库文件)与 hallo.cgi(或 hallo.exe)位于同一位置,但是当我运行 hallo.exe SQLite 找不到 main.db 并因此创建一个 main.db它是自己的,但是因为它是自己创建的,所以数据库中没有数据,因为它找不到库表。

我将如何解决这个问题?

在上面用于编译的批处理文件中,我包含了 Par Packer 的 main.db,但它似乎完全忽略了该行:
-a "D:\Perl\main.db" ^

最佳答案

我通过查看 $ENV{PWD} 是什么解决了这个问题。 ($ENV{PWD} 表示工作目录)并使用 chdir 更改为它。一旦进入,SQlite 就能够获取文件并正常工作。请注意,在我的源代码中,我的操作包括 Par 打包程序需要的库和模块,这造成了工作目录发生更改的情况。将其更改为原始工作目录解决了这个问题。

关于perl - Sqlite 无法使用 Mojolicious 和 Par Packer 找到数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39637332/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com