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)相关推荐
- MySQL数据库,从入门到精通:第十四篇——MySQL视图详解
MySQL数据库,从入门到精通:第十四篇--MySQL视图详解 第 14 篇_视图 1. 常见的数据库对象 2. 视图概述 2. 1 为什么使用视图? 2. 2 视图的理解 3. 创建视图 3. 1 ...
- MySQL数据库,从入门到精通:第十二篇——MySQL数据类型详解
MySQL数据库,从入门到精通:第十二篇--MySQL数据类型详解 第 12 章_MySQL数据类型精讲 1. MySQL中的数据类型 2. 整数类型 2. 1 类型介绍 2. 2 可选属性 2. 2 ...
- linux里面搭建php环境,Linux下搭建PHP环境
该站下有系列PHP文章. 在Linux下搭建PHP环境比Windows下要复杂得多.除了安装Apache,PHP等软件外,还要安装一些相关工具,设置必要参数.而且,如果要使用PHP扩展库,还要进行编译 ...
- linux离线配置qt环境,Linux下配置QT环境
一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...
- 苹果系统安装python环境_mac下python相关环境搭建(python开发必经之路之mac快速上手)...
小结 本篇文章是对上一篇文章<MacOS的小结及终端shell的选择和相关配置全过程(zsh+iTerm2+powerline全解)>的一些拓展和总结,对于相关问题的详细解释和拓展点的标注 ...
- matlab开发环境,Windows 下开源开发环境的搭建
因项目需要在 Windows 下测试开发的程序, 所以研究了一下如何在 Windows 下搭建基于 gcc 的开源开发环境. MSYS2 是 Windows 下的一款开源软件构建和发布平台, 网址为 ...
- vs2010开发php,VS2010 下 开发C++
VS2010 下 开发C++ 1, 导入头文件 #include 当打" 2, 枚举 enum 和 C# 中不同 例: enum type { a = 1, b = 2, c = 3 }; ...
- Linux编译程序源码环境,Linux下对nodejs环境进行源码编译并部署云应用
Node 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为与PHP.Python.Perl.Ruby 等服务端语言平起平坐的脚本语言. 该环境安装非常简单,这里 ...
- mysql c测试程序_Linux平台下从零开始写一个C语言访问MySQL的测试程序
Linux 平台下从零开始写一个 C 语言访问 MySQL 的测试程序 2010-8-20 Hu Dennis Chengdu 前置条件: (1) Linux 已经安装好 mysql 数据库: (2) ...
最新文章
- Redis 高级特性(2)—— 发布 订阅模式
- python 2x list 里面的中文打印效果为unicode 编码 的处理方法
- js仿QQ中对联系人向左滑动、滑出删除按钮的操作
- oracle nvarchar2,varchar2,char,nchar说明
- python的moviepy库 打包 报错: ‘moviepy.audio.fx.all‘ has no attribute ‘audio_fade 的解决办法
- 网络货运平台要智能,安全的数据底座少不了
- Android UI自定义Spinner下拉框(用popuwindow实现)-转
- 互联网公司上演反腐风暴;GitHub CEO 对断供表示无能为力;程序员面试锦集| 开发者周刊...
- 第20章 TCP的成块数据流
- Linux命令解释之groupadd,groupdel,groupmod,groupmems
- window无法启动windows Firewall
- android gps原始数据格式,Android编程获取GPS数据的方法详解
- springboot对JPA的支持
- 新元宇宙奇科幻小说每周连载《地球人奇游天球记》第十二回金星挖矿
- 如何定义和使用一个 Lambda 表达式
- vscode1.65.2 + anaconda 在python拓展为2022.2.1924087327版本上的问题及解决
- C# 将两个DataTable合并
- 【恒指早盘分析】期货交易绝非你想的那么简单
- 如何查看ActiveX控件的UUID?
- Android下获取FPS的几种方法
热门文章
- 零基础小白10分钟用Python搭建小说网站!网友:我可以!
- 微软 SQL Server 2019 将免费支持 Java;Rancher Labs获2500万美元融资;腾讯云进军日本市场……...
- 一文详解微服务架构的数据设计
- SpringBoot 整合 Spring Cloud Alibaba Nacos 连通性+负载均衡
- ThreadPoolExecutor中的keepAliveTime详解
- Windows搭建SonarQube_Mysql
- git commit提交代码时提示LF与CRLF转换问题 error
- halo多人正在连接服务器,在线人数过低 《光晕2》PC版多人服务器下月关闭
- android 获取通讯录全选反选_Xamarin.Forms读取并展示Android和iOS通讯录 TerminalMACS客户端...
- C++中继承与虚函数示例