Perl DBD::SQLite 在 win7 上安装失败
Perl DBD::SQLite installation fail on win7
我从未安装过 DBI 或 DBI::SQLite,因为它们似乎内置在我的 Perl v5.32 安装中。他们在我正在开发的脚本中运行良好,现在大约有 300 行,但我最近 运行 遇到了一个编码问题。我在 https://metacpan.org/pod/DBD::SQLite、
处找到了以下示例行
use DBI qw(:sql_types);
use DBD::SQLite::Constants ':dbd_sqlite_string_mode';
$dbh->{sqlite_string_mode} = DBD_SQLITE_STRING_MODE_UNICODE_FALLBACK;
,看起来以下变体应该可以解决我的问题。 (相同,只是我将 FALLBACK 替换为 BYTES。)
use DBI qw(:sql_types);
use DBD::SQLite::Constants ':dbd_sqlite_string_mode'; # line 16
$dbh->{sqlite_string_mode} = DBD_SQLITE_STRING_MODE_UNICODE_BYTES;
但是,当我 运行 时出现以下错误。 (drive backup,.compl
是我的脚本文件的名称。)
"dbd_sqlite_string_mode" is not defined in
%DBD::SQLite::Constants::EXPORT_TAGS at drive backup,.compl line 16.
如果我从命令行运行,
cpanm DBD::SQLite::Constants
,它给了我这个:
DBD::SQLite::Constants is up to date. (undef)
但是,如果我运行这个,
cpanm DBD::SQLite
,它给了我这个:
--> Working on DBD::SQLite Fetching http://www.cpan.org/authors/id/I/IS/ISHIGAKI/DBD-SQLite-1.70.tar.gz
... OK Configuring DBD-SQLite-1.70 ... OK Building and testing
DBD-SQLite-1.70 ... FAIL ! Installing DBD::SQLite failed. See
C:\Users\arnold.cpanm\work37612566.1020 0\build.log for details.
Retry with --force to force install it.
请参阅下面的构建日志图像。问题的第一个迹象似乎是关于“从指针转换为不同大小的整数”的警告。在那之后,很多事情似乎都不对劲。我不想强制安装。
我的 OS 是 Windows 7 x64 Pro。如果 DBD::SQLite 已经超越了 win7,那么我可能可以使用 Encode 解决我的编码问题,但这种方法更乏味。我更希望 DBD::SQLite 更新成功完成,这样我就可以(希望)使用 handle 属性。
我不知道如何附加构建日志,但这里有一些图像。第一个是开始。问题的第一个迹象是在该图像的最底部。第二张图片与日志中的第一张图片相邻,它显示了重复的问题。第三张图是日志的结尾。在日志结束之前,有超过一千条未定义的参考线。
我使用 Encode 解决了我的编码问题。该解决方案并不像我预期的那样乏味。 DBD::SQLite v1.70 似乎比 v1.66 提供了很多增强的编码功能,但我无法在 Perl v5.32.1.1 上安装它。我不知道它是否应该兼容,但在这一点上,这对我来说并不重要。 Perl v5.32 附带的 v1.66 正在按照宣传的方式工作,Encode 提供了我管理字符串数据所需的方法。
我从未安装过 DBI 或 DBI::SQLite,因为它们似乎内置在我的 Perl v5.32 安装中。他们在我正在开发的脚本中运行良好,现在大约有 300 行,但我最近 运行 遇到了一个编码问题。我在 https://metacpan.org/pod/DBD::SQLite、
处找到了以下示例行use DBI qw(:sql_types);
use DBD::SQLite::Constants ':dbd_sqlite_string_mode';
$dbh->{sqlite_string_mode} = DBD_SQLITE_STRING_MODE_UNICODE_FALLBACK;
,看起来以下变体应该可以解决我的问题。 (相同,只是我将 FALLBACK 替换为 BYTES。)
use DBI qw(:sql_types);
use DBD::SQLite::Constants ':dbd_sqlite_string_mode'; # line 16
$dbh->{sqlite_string_mode} = DBD_SQLITE_STRING_MODE_UNICODE_BYTES;
但是,当我 运行 时出现以下错误。 (drive backup,.compl
是我的脚本文件的名称。)
"dbd_sqlite_string_mode" is not defined in %DBD::SQLite::Constants::EXPORT_TAGS at drive backup,.compl line 16.
如果我从命令行运行,
cpanm DBD::SQLite::Constants
,它给了我这个:
DBD::SQLite::Constants is up to date. (undef)
但是,如果我运行这个,
cpanm DBD::SQLite
,它给了我这个:
--> Working on DBD::SQLite Fetching http://www.cpan.org/authors/id/I/IS/ISHIGAKI/DBD-SQLite-1.70.tar.gz ... OK Configuring DBD-SQLite-1.70 ... OK Building and testing DBD-SQLite-1.70 ... FAIL ! Installing DBD::SQLite failed. See C:\Users\arnold.cpanm\work37612566.1020 0\build.log for details. Retry with --force to force install it.
请参阅下面的构建日志图像。问题的第一个迹象似乎是关于“从指针转换为不同大小的整数”的警告。在那之后,很多事情似乎都不对劲。我不想强制安装。
我的 OS 是 Windows 7 x64 Pro。如果 DBD::SQLite 已经超越了 win7,那么我可能可以使用 Encode 解决我的编码问题,但这种方法更乏味。我更希望 DBD::SQLite 更新成功完成,这样我就可以(希望)使用 handle 属性。
我不知道如何附加构建日志,但这里有一些图像。第一个是开始。问题的第一个迹象是在该图像的最底部。第二张图片与日志中的第一张图片相邻,它显示了重复的问题。第三张图是日志的结尾。在日志结束之前,有超过一千条未定义的参考线。
我使用 Encode 解决了我的编码问题。该解决方案并不像我预期的那样乏味。 DBD::SQLite v1.70 似乎比 v1.66 提供了很多增强的编码功能,但我无法在 Perl v5.32.1.1 上安装它。我不知道它是否应该兼容,但在这一点上,这对我来说并不重要。 Perl v5.32 附带的 v1.66 正在按照宣传的方式工作,Encode 提供了我管理字符串数据所需的方法。