【发布时间】:2016-09-22 11:07:13
【问题描述】:
我正在用 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" ^
【问题讨论】:
-
也许您应该将您的更新发布为答案并将其标记为已接受答案以解决此问题的状态。
标签: perl sqlite mojolicious