今天早上,我的mySQL在我的系统上从5.7版自动更新到8.0.11。
此后,我看不到任何数据库或在phpMyAdmin上运行任何命令。我尝试执行的所有操作都会导致涉及let alamofireSource = urlStrings.compactMap { $0.map(AlamofireSource.init) }
// or, use a named closure argument
let alamofireSource = urlStrings.compactMap { str in str.map(AlamofireSource.init) }
表的某些错误。
我得到的大多数错误是:compactMap(_:)
我已经搜索了错误,并尝试运行命令来创建用户let alamofireSource = urlStrings.flatMap { $0.map(AlamofireSource.init) }
// or, use a named closure argument
let alamofireSource = urlStrings.flatMap { str in str.map(AlamofireSource.init) }
,如this答案所示。但是我不断收到语法错误。
在搜索涉及版本5.7和8.0.11的重大问题之后,我在此site中看到系统表已移至InnoDB。
第一个用于MySQL的存储引擎-MyISAM,到目前为止在MySQL中可用。 MySQL 5.7仍将MyISAM用于MySQL模式中的MySQL特权表,但是在MySQL中,它们已移至InnoDB。
我什至尝试全新安装8.0.11版,因此我可以导入数据库,但是尝试以root用户身份登录时会遇到相同的#1449错误。
Ps。我正在使用Fedora 28。
答案 0 :(得分:19)
You should execute
mysql_upgrade
each time you upgrade MySQL.
这是因为在某些升级或降级之后,表被更改了,您需要(重新)创建一些特权
mysql -u root -p
mysql> SET GLOBAL innodb_fast_shutdown = 1;
mysql_upgrade -u root -p
mysql_upgrade
检查所有数据库中的所有表是否存在 与当前版本的MySQL Server不兼容。mysql_upgrade
还会升级系统表,以便您可以 可能已经获得的新特权或功能的优势 添加。