首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Sqlite无法使用Mojolicious和Par Packer找到DB文件

Sqlite无法使用Mojolicious和Par Packer找到DB文件
EN

Stack Overflow用户
提问于 2016-09-22 19:07:14
回答 1查看 217关注 0票数 6

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

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

我使用下面的windows批处理文件和Par打包程序来生成一个.exe文件:

代码语言:javascript
运行
复制
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

上面的方法运行得很好,但是当我尝试运行hello.exe时,我一引入SQLite就得到了以下错误:

代码语言:javascript
运行
复制
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,但是因为它是自己创建的,所以数据库中没有数据,因为它找不到库表。

我该如何着手解决这个问题呢?

在上面我用于编译的批处理文件中,我包含了用于解析打包程序的main.db,但它似乎完全忽略了这一行:

代码语言:javascript
运行
复制
-a "D:\Perl\main.db" ^
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-21 14:38:57

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39637332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档