regex - 运行 checksetup.pl 时出错 Bugzilla 5.0.6 安装:您提供的正则表达式 '^[^,]+{' 无效
问题描述
我正在尝试使用本指南在 Windows 10 机器上安装 Bugzilla:
https://bugzilla.readthedocs.io/en/latest/installing/windows.html#
Apache 2.4、Perl 5.28.2 和 MySQL 8.0 已安装并运行。我已经使用“install-modules.pl --all”命令安装了所有必需的 Perl 模块。我可以打开 Bugzilla 页面,尽管它是纯文本版本。
问题是最后一次运行 checksetup.pl。它检查所有已安装的模块,然后给我这个:
Removing existing compiled templates...
Precompiling templates...done.
Initializing "Dependency Tree Changes" email_setting ...
Initializing "Product/Component Changes" email_setting ...
Use of uninitialized value in numeric eq (==) at Bugzilla/Install/DB.pm line 2688.
The regular expression you provided '^[^,]+{' is not valid. The error
was: Syntax error in regular expression on line 1, character 7..
我在 DB.pm 文件中找到了正则表达式sub _add_password_salt_separator
。(第 4110 行)
这是似乎是问题孩子的代码块:
my $profiles
= $dbh->selectall_arrayref(
"SELECT userid, cryptpassword FROM profiles WHERE ("
. $dbh->sql_regexp("cryptpassword", "'^[^,]+{'")
. ")");
我尝试重新加载 Bugzilla 以查看它是否只是下载或配置的问题,但在第 3 轮之后,我仍然收到相同的错误。
我尝试查找表达式,它似乎没有任何意义。我不熟悉正则表达式,所以我不知道该去哪里解决这个问题。任何帮助使该系统运行表示赞赏。
解决方案
似乎 MySQL 不再允许使用未转义{
来匹配{
.
这可能发生在 MySQL 在版本 8.0.4 中开始使用具有更好 Unicode 支持的新正则表达式库时。
中Bugzilla/Install/DB.pm
,替换
"'^[^,]+{'"
和
"'^[^,]+\\\\{'"
我提交了一张票。
对于那些好奇为什么有这么多斜线的人:
$dbh->sql_regexp
期望它的第二个参数是生成 MySQL 正则表达式模式的 SQL。
- Perl 字符串文字
"'\\\\{"
产生字符串'\\{'
。 - 该字符串
'\\{'
用作 SQL 代码。 - SQL 代码
'\\{'
生成字符串\{
。 - 该字符串
\{
用作正则表达式模式。 - 正则表达式模式
\{
匹配 a{
。
推荐阅读
- node.js - React 未使用正确的 REACT_APP_ 前缀检测我的 .env 文件
- asp.net-core-5.0 - 将 2 个模型传递给 ASP.NET Core 5 视图
- entity-framework - EF 框架代码优先 - 未生成正确的数据库脚本
- html - 将 R Markdown 文件转换为电子邮件
- python - 为什么这个 tkinter Menu 命令执行带有错误参数的函数?
- c++ - 为什么这里需要 std::launder ?
- r - 如何在ggplot ggppatern中将模式添加到堆叠和并排中
- ios - xCode:无法在颤振上安装“Runner”问题
- javascript - 在 HTML 和 Javascript/Jquery 中单击按钮后,如何执行修改 CSS 代码的函数?
- lucene - 对某些关键字使用通配符的奇怪行为