修复mysql错误:mysql 8.0中正则表达式的非法参数

修复mysql错误:mysql 8.0中正则表达式的非法参数,mysql,regex,Mysql,Regex,升级到MySQL 8.0后,我会遇到如下错误 PHP Warning: mysql_query(): Unable to save result set in .../dbo_mysql.php on line 127 Datenbankfehler dbo_mysql.php/Zeile 146: select * from test where test REGEXP '[[:<:]]Acetylsalicylsäure[[:>:]]' Illegal argument to

升级到MySQL 8.0后,我会遇到如下错误

PHP Warning:  mysql_query(): Unable to save result set in .../dbo_mysql.php on line 127
Datenbankfehler dbo_mysql.php/Zeile 146: select * from test where test REGEXP '[[:<:]]Acetylsalicylsäure[[:>:]]'
Illegal argument to a regular expression.
PHP警告:mysql\u query():无法将结果集保存在第127行的…/dbo\u mysql.PHP中
Datenbankfehler dbo_mysql.php/Zeile 146:从test REGEXP'[[::]]所在的测试中选择*
正则表达式的非法参数。
据介绍,“MySQL 8.0现在使用Unicode国际组件(ICU)实现正则表达式支持。”

据介绍,“MySQL使用了Henry Spencer的正则表达式实现。”

因此,由于您使用的是MySQL 8.0,而不是
[[::]]
,因此现在必须使用
\b

我有一台运行着许多老客户项目的服务器,更新所有代码的工作量太大了

如何恢复Mysql 8.0中旧的正则表达式行为?

当我报告说兼容性似乎不是驾驶要求时,是否有SQL模式的配置值。不确定是否有帮助。如果正则表达式位于存储例程中,或作为查询参数传递,甚至基于从数据库本身读取的字符串,则查询重写可能没有帮助。我不知道是否有真正的解决方法。令人恼火的是,MySQL 8.0决定比以前的版本更自由地打破向后兼容性。正则表达式语法只是一个例子。除了咬紧牙关、对项目进行代码清理和大量测试之外,我不知道还有什么解决方案。FWIW,没有任何SQL_模式的解决方案。regexp解析器被委托给第三方实现,因此只存在旧的regexp库或新的regexp库。无法在同一服务器实例中的两个实现之间切换。然后降级回MySQL 5.7?但这只会让事情变得更糟。总有一天MySQL 5.7将走向生命的尽头。事实上