MySQL在开发人员的网站上阅读到在第八版中引入了对UTF的更全面支持之后,决定做出更新数据库的决定。 特别是,MySQL 8.0.11使用基于ICU(Unicode国际组件)的正则表达式。
我注意到的第一件事是正则表达式中单词的边界不再表示为:
SELECT '' REGEXP '[[:<:]][[:>:]]';
新版本中的边界一词表示如下:
'\\b\\b'
此外,LOAD DATA LOCAL INFILE停止工作,即从本地计算机上的文本文件导入数据。 事实证明,在MySQL 8.0中,全局变量local_infile默认情况下设置为OFF。 他们在开发人员的网站上写道,这是安全措施。 可以使用以下命令查看此变量的值:
SHOW GLOBAL VARIABLES LIKE 'local_infile';
我通过在终端中执行解决了这个问题:
SET GLOBAL local_infile = true;
也就是说,它像往常一样适合MySQL中的终端:
mysql -u root -p
并执行以上命令。
以防万一,我以SQL格式在GZ归档文件中将数据库导出到PHPMyAdmin。 并没有后悔。 仅将数据文件从5.7替换为8.0.11不起作用。 第八版无法识别它们。 从SQL文件导入数据毫无疑问。
仅此而已。 其余的工作正常。 我已经看到,在第八版中,ICU的正则表达式具有更多功能,这对于使用西里尔字母很重要。