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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

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

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

一、安裝Mysql

1、官網下載mysql的tar包(提示:建議vpn環境下載)

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

# 初始化數據庫cd /usr/local/mysql

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

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

# 停止

sudo support-files/mysql.server stop

# 檢查 MySQL服務端 運行狀態

sudo support-files/mysql.server status

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

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

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

mysql> flush privileges;

3、將mysql的字符集設置為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安裝包,官網下載地址提供的安裝包bug已經被修復,包內容中沒有rpk文件,無法修改公鑰

三、將遠程IP下數據庫的內容(包括結構和數據)復制到本地數據庫完成數據庫環境的搭建

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

示例:

錯誤一:

構造表時出現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:在非嚴格模式下,可以插入形如“0000-00-00 00:00:00”的非法日期,MySQL數據庫僅拋出一個警告。而啟用該選項后,MySQL數據庫不允許插入零日期,插入零日期會拋出錯誤而非警告。

解決方案:

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;

錯誤二:

拷貝數據時出現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, 切換為高版本驅動包例如mysql-connector-java-8.0.15.jar之后就能解決問題。

四、運行程序時出現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中出現,那么這個SQL是不合法的,因為列不在GROUP BY從句中,也就是說查出來的列必須在group by后面出現否則就會報錯,或者這個字段出現在聚合函數里面。

解決方案:

將mysql的sql_mode中的ONLY_FULL_GROUP_BY設置去除。

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;

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。