今天在往本地導數據表的時候老是報錯:
[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 | +-----------+