日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat)

發(fā)布時間:2024/9/27 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、安裝Mysql

1、官網(wǎng)下載mysql的tar包(提示:建議vpn環(huán)境下載)

2、解壓并安裝tar包

# 移動解壓后的二進制包到安裝目錄

sudo mv mysql-5.7.19-osx10.9-x86_64 /usr/local/mysql

# 更改 mysql 安裝目錄所屬用戶與用戶組

cd /usr/local

sudo chown -R root:wheel mysql

# 初始化數(shù)據(jù)庫cd /usr/local/mysql

sudo bin/mysqld --initialize --user=mysql (提示:初始化數(shù)據(jù)庫時會隨機生成root@localhost用戶的隨機密碼,用此密碼登陸數(shù)據(jù)庫)

# 開啟mysql服務(wù)端程序# 啟動sudo support-files/mysql.server start# 重啟sudo support-files/mysql.server restart

# 停止

sudo support-files/mysql.server stop

# 檢查 MySQL服務(wù)端 運行狀態(tài)

sudo support-files/mysql.server status

# 通過自帶的Mysql Client 連接數(shù)據(jù)庫cd /usr/local/mysql/bin./mysql -u root -p

# 修改root@localhost用戶的密碼mysql> alter user?'root'@'localhost' identified?by?'new-password';# 將root用戶的host改為通配符%,并刷新權(quán)限,使root@127.0.0.1等也可以登錄

mysql> update user set user.Host = '%' where user.User = 'root';

mysql> flush privileges;

3、將mysql的字符集設(shè)置為utf8

# 更改 mysql 的啟動配置文件sudo vi /etc/my.cnf

[client]

port = 3306

default-character-set = utf8

[mysqld]

user = mysql

port = 3306

default-storage-engine = Innodb

character-set-server = utf8

collation-server = utf8_general_ci

init_connect = 'SET NAMES utf8'

# 重啟mysqld后,進入mysql,查看字符集

mysql> show variables like "%character%";

二、安裝Navicat

參考教程:

ps : 一定要下載該教程提供的12.0.22安裝包,官網(wǎng)下載地址提供的安裝包bug已經(jīng)被修復(fù),包內(nèi)容中沒有rpk文件,無法修改公鑰

三、將遠(yuǎn)程IP下數(shù)據(jù)庫的內(nèi)容(包括結(jié)構(gòu)和數(shù)據(jù))復(fù)制到本地數(shù)據(jù)庫完成數(shù)據(jù)庫環(huán)境的搭建

使用mysql-cp-tool工具程序復(fù)制數(shù)據(jù),這種方法比在Navicat中導(dǎo)出數(shù)據(jù)再在本地數(shù)據(jù)庫中通過sql腳本導(dǎo)入數(shù)據(jù)要來得方便,因為導(dǎo)出數(shù)據(jù)成sql腳本時要將選中數(shù)據(jù)庫中所有數(shù)據(jù)一起導(dǎo)出,而用程序復(fù)制時復(fù)制記錄的條數(shù)可配置,且在復(fù)制過程中出錯(一般是構(gòu)造表的時候)能追蹤出錯原因。

示例:

錯誤一:

構(gòu)造表時出現(xiàn)MySQLSyntaxErrorException: Invalid default value for timestamp(3).

原因:

mysql> show variables like "sql_mode";

sql_mode = ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

NO_ZERO_DATE:在非嚴(yán)格模式下,可以插入形如“0000-00-00 00:00:00”的非法日期,MySQL數(shù)據(jù)庫僅拋出一個警告。而啟用該選項后,MySQL數(shù)據(jù)庫不允許插入零日期,插入零日期會拋出錯誤而非警告。

解決方案:

mysql> set global sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

mysql> commit;

錯誤二:

拷貝數(shù)據(jù)時出現(xiàn)java.sql.SQLException: Cannot convert value '2018-10-08 22:42:03.973' from column 103 to TIMESTAMP.

Caused by: java.lang.IllegalArgumentException: nanos > 999999999 or < 0

原因:

項目中使用的MySQL JDBC driver版本過低,無法對該類型string串進行處理。

解決方案:

若是低版本的driver,例如mysql-connector-java-5.1.10-bin, 切換為高版本驅(qū)動包例如mysql-connector-java-8.0.15.jar之后就能解決問題。

四、運行程序時出現(xiàn)SQLException

錯誤一:

org.springframework.jdbc.BadSqlGrammarException:

### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'column1' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

### The error may involve defaultParameterMap

### The error occurred while setting parameters

### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'column1' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'column1' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

原因:ONLY_FULL_GROUP_BY的意思是:對于GROUP BY聚合操作,如果在SELECT中的列,沒有在GROUP BY中出現(xiàn),那么這個SQL是不合法的,因為列不在GROUP BY從句中,也就是說查出來的列必須在group by后面出現(xiàn)否則就會報錯,或者這個字段出現(xiàn)在聚合函數(shù)里面。

解決方案:

將mysql的sql_mode中的ONLY_FULL_GROUP_BY設(shè)置去除。

mysql> set global sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

mysql> commit;

總結(jié)

以上是生活随笔為你收集整理的mysql数据库开发环境_MacOS下搭载开发环境之数据库篇(Mysql + Navicat)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。