今天正常打开项目启起来之后浏览器报了500错误,检查后发现是mysql数据库连接的问题,从来没遇到这样的错误,于是打开了navicat发现mysql无法启动了...尝试在计算机-管理-服务中手动启动mysql服务,结果报了如下的错误
很棘手,从来没遇到过,查找资料后大家给出的解决方案大致为
清空该文件夹后初始化mysql,不过data下面包含了用户本地的数据库,建议大家备份后操作,当时没注意到,还好有sql文件,恢复也搞了半天,清空后用管理员身份进入cmd
接下来在cmd中cd bin文件的路径 进入后输入mysqld --initialize
正常来说这里等一会后直接net start mysql后就已经解决,不过初始化输入后又遇到了问题,报了TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details)的错误,又各种查阅资料后大概了解到timestamp这个东西从 5.6开始,默认行为已经是 deprecated 了,并且
在MySQL 5.6.6之前,TIMESTAMP的默认行为:
•TIMESTAMP列如果没有明确声明NULL属性,默认为NOT NULL。(而其他数据类型,如果没有显示声明为NOT NULL,则允许NULL值。)设置TIMESTAMP的列值为NULL,会自动存储为当前timestamp。
•表中的第一个TIMESTAMP列,如果没有声明NULL属性、DEFAULT或者 ON UPDATE,会自动分配 DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP 属性。
•表中第二个TIMESTAMP列,如果没有声明为NULL或者DEFAULT子句,默认自动分配'0000-00-00 00:00:00′。插入行时没有指明改列的值,该列默认分配'0000-00-00 00:00:00′,且没有警告。(查阅自脚本之家)
此时我们需要在mysql的配置文件my.ini中在[mysqld]行下添加
explicit_defaults_for_timestamp=true
explicit_defaults_for_timestamp这个属性 关闭了 timestamp 类型字段锁拥有的一些会让人感到奇怪的默认行为,加入了该参数之后,如果还需要为 timestamp类型的字段指定默认行为,那么就需要显示的在创建表时显示的指定。
还有一个小的知识点在于如何找到这个叫my.ini的配置文件:
需要我们打开查看隐藏的项目
后进入会发现多了一个叫programData的隐藏文件夹
后面跟着如图的路径即可找到