前言php
今天在工做發現一個錯誤,在往本地導數據表的時候總是報錯:mysql
1
|
[Err] 1294 - Invalid ON UPDATE clause for '字段名' column
|
報錯的數據表字段:sql
1
|
`字段名` 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 版本的選項,因此本身升級一下。spa
從官網上下載高版本的 MySQL :.net
官方網址:https://dev.mysql.com/downloads/file/?id=467269命令行
百度雲盤地址:https://pan.baidu.com/s/1mi4UHtAcode
選的版本是 5.7.17(後面才發現 5.7 版本的安裝、系統表字段等又和以前的版本有所不一樣)。htm
步驟:ip
1、備份原來 phpStudy 中 MySQL 安裝目錄
2、把下載的 MySQL 壓縮文件解壓至 phpStudy 下的 MySQL目錄,複製 my-default.ini ,重命名爲 my.ini。
打開 my.ini,找到 #basedir 處編輯:
1
2
|
basedir=D:/phpStudy/MySQL
datadir=D:/phpStudy/MySQL/data
|
3、把 MySQL 安裝路徑添加至系統環境變量
4、在 cmd 下進入 MySQL 的 bin 目錄(個人是 D:/phpStudy/MySQL/bin),執行:
1
|
mysqld --initialize
|
初始化數據庫
5、安裝服務:
1
|
mysqld -install
|
啓動服務:
1
|
net start MySQL
|
6、此時登入 MySQL 報錯:
1
2
3
|
C:\Users\dell>mysql -uroot -p
Enter password: ****
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
|
嘗試修改 root 用戶密碼:
打開 my.ini,找到 [mysqld],在下面添加:
1
|
skip-grant-tables
|
此時使用 root 帳號,密碼處按回車便可登陸。
修改密碼:
1
2
|
mysql>update mysql.user set authentication_string=password('new_password') where user='root' and Host ='localhost'
mysql> ALTER USER USER() IDENTIFIED BY 'news_password';
|
刷新權限:
1
|
FLUSH PRIVILEGES;
|
註釋掉 my.ini 中剛纔添加的
1
|
skip-grant-tables
|
從新登陸。
此時查看 mySQL 版本:
1
2
3
4
5
6
|
mysql> select version();
+-----------+
| version() |
+-----------+
| 5.7.17 |
+-----------+
|
7、問題產生:
安裝好phpstudy後,升級了MySQL後,經過phpstudy啓動,Apache能夠啓動,Mysql沒法啓動。
解決方法: 以前已經裝過Mysql,要把系統服務裏面的MySQL刪除,留下MySQLa服務。 在cmd命令行下輸入:sc delete mysql 便可刪除。