[Err] 1294 - Invalid ON UPDATE clause for '字段名' column报错的数据表字段:`字段名` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
朋友说同一个 sql 文件他可以导成功。所以我猜想可能是数据库版本的问题,朋友的数据库版本是 5.6,
我查了下本地的数据库版本是 5.5.53。网上查了一下,果然是版本的问题,5.5 和 5.6 在 TIMESTEMP 的行为上有所不同,5.6.5 之前的版本不支持多个CURRENT_TIMESTAMP 默认值。
由于本地用的集成环境是 phpStudy 2016,没有找到升级 MySQL 版本的选项,所以自己升级一下。
从官网上下载高版本的 MySQL :https://dev.mysql.com/downloads/file/?id=467269,选的版本是 5.7.17(后面才发现 5.7 版本的安装、系统表字段等又和之前的版本有所不同)。
步骤:
0x00
备份原来 phpStudy 中 MySQL 安装目录
0x01
把下载的 MySQL 压缩文件解压至 phpStudy 下的 MySQL目录,复制 my-default.ini ,重命名为 my.ini。
打开 my.ini,找到 #basedir 处编辑:
basedir=D:/phpStudy/MySQL
datadir=D:/phpStudy/MySQL/data
0x02
把 MySQL 安装路径添加至系统环境变量
过程:计算机—>系统属性—>高级系统配置—>环境变量
选择PATH,在其后面添加: 你的mysql bin文件夹的路径 (如:我的是:D:\Program Files\MySQL\MySQL Server 5.6\bin ) 修改后的PATH为:
PATH=…….;D:\Program Files\MySQL\MySQL Server 5.6\bin (需注意:1.必须在原有PATH后加英文输入下的分号;2.是追加,不是覆盖。)
0x03
在 cmd 下进入 MySQL 的 bin 目录(我的是 D:/phpStudy/MySQL/bin),执行:
mysqld --initialize
初始化数据库
0x04
安装服务:
mysqld -install
启动服务:
net start MySQL
0x05
此时登入 MySQL 报错:
C:\Users\dell>mysql -uroot -p
Enter password: ****
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
尝试修改 root 用户密码:
关闭服务net stop MySQL
用安全模式打开,mysqld --skip-grant-tables
这个时候,光标会一直闪。注意,不要动,打开另一个命令行窗口。
登录 mysql -u root -p
密码为空,直接回车;
就可以进去了
然后
use mysql;
(可能先前的版本密码的抬头是password,5.7.11是 authentication_string,可以select * from user,查看一下)
(老版本)update user set password=password("123456") where user="root";
(5.7.11)update user set authentication_string=password("123456") where user="root";
最后
刷新权限:
FLUSH PRIVILEGES;
重新登录。
升级后随phpstudy启动
命令行执行:mysqld --remove mysql
然后 在phpstudy中服务管理器总能安装mysql服务
此时查看 mySQL 版本:
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.17 |
+-----------+
遇见的错:不能解决可以mysqld --console查看错误日志
逐步解决比如这个
尝试移除mysql服务
出的错应该差不多都是这个样的,把以下写入配置文件
#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
sql_mode=NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#更改sql的模式
explicit_defaults_for_timestamp=true
#使用默认的时间戳
secure_file_priv=E:/Dback/phpstudy/PHPTutorial/tmp
secure_file_priv=E:/Dback/phpstudy/PHPTutorial/tmp
secure_file_priv=E:/Dback/phpstudy/PHPTutorial/tmp
解决navicate无法登录mysql问题,显示密码过期
1,用mysql命令行登录mysql的root用户
2,重新修改root密码 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass');
mysql 5.7增加了两个字段password_last_changed、password_lifetime来完善安全策略。
上面的方法仅仅治标不治本。
可以设置参数default_password_lifetime来延长使用期限
或者
ALTER USER 'root'@localhost' PASSWORD EXPIRE INTERVAL 90 DAYS;ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;ALTER USER 'root'@'localhost' PASSWORD EXPIRE DEFAULT;
ALTER USER 'root'@localhost' PASSWORD EXPIRE INTERVAL 90 DAYS;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'localhost' PASSWORD EXPIRE DEFAULT;
这三句具体作用是什么呢?
第一句有效期验证 90天
第二句 不验证有效期
第三句 设置为默认值
文章转自青彦博客:青彦博客
phpstudy 升级mysql的版本为5.7,解决navicate无法登录mysql问题
最新推荐文章于 2023-10-16 15:14:10 发布