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

一、安装Mysql

1、官网下载mysql的tar包(提示:建议vpn环境下载)

4cdc3d1d95526b5490aed80c0c25d2b6.png

8d61fa69c499f048ee8315b75643369c.png

a50598fcd01042964e96f74fb8c0cfe1.png

adfd666b74734e418b3f7c54a9723ff6.png

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用户的随机密码,用此密码登陆数据库)

87eb8d640a7cd42cd7097a0b406b4875.png# 开启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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529237.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql alter 唯一键_MySQL列属性 之 唯一键

MySQL列属性 之 唯一键唯一键唯一键&#xff1a;每张表往往有多个字段需要具有唯一性&#xff0c;数据不能重复&#xff0c;但是在每张表中&#xff0c;只能有一个主键&#xff0c;因此 唯一键就是用来解决表中多个字段需要具有唯一性的问题。例如身份证号码应该每一行的记录不…

如何在mysql中添加复选框_如何使用输入和复选框更新mysql

如果我理解正确,您需要这样做:mysql_query("UPDATE mp3SETaktif 1,baslik " . mysql_escape_string($_POST[baslik]) ."WHERE id $zuha");mysql_query("update mp3 set aktif 1,baslik $_POST[baslik]where id $_POST[id]")现在唯一的区别…

mysql 检查列是否存在,如何检查mysql表列是否存在?

How can I check if mysql table field even exists ?The column name is price and I need to see if it exists.Havent understood really how the EXISTS works...Any examples or ideas ?Thanks解决方案In PHP:$fields mysql_list_fields(database_name, table_name);$c…

mysql proxy yum_mysql 高可用架构 proxysql 之一 yum安装

os:centos 7.4mysql: 5.7proxysql: 1.4.10ip 规划如下&#xff1a;192.168.56.101 node1 (proxysql)192.168.56.102 node2 (mysql master)192.168.56.103 node3 (mysql slave)192.168.56.104 node4 (mysql slave)安装mysql 5.7node2、node3、node4 安装 mysql 5.7 software详细…

wpf 使用位图画图为什么断断续续_WPF的未来是微软WinUi!

WPF(Windows Presentation Foundation)是微软推出的基于Windows 的用户界面框架&#xff0c;属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架&#xff0c;真正做到了分离界面设计人员与开发人员的工作&#xff1b;同时它提供了全新的多媒体交互用户图形界…

antd新增一行页码不正确_antd-Table@4.x对rowKey属性的重构

时间&#xff1a;2020/04/26 &#xff0c;转载请注明出处。写在前面antd团队于2020年2月发布了酝酿已久的antd4.0版本&#xff0c;对样式的调整、部分组件逻辑的重构都进行了较大改动&#xff0c;本文针对Table的rowKey属性重构作分析。由一个mistake带来的思考在数据治理模块的…

qt调用mysql调用了存储过_Qt调用Server SQL中的存储过程

Server SQL中的存储过程如下&#xff1a;CREATE procedure PINSERTPCpcnum int,pcname varchar(50),pctype int,ipaddress varchar(50),port int,pcid int outputas--declare pcid intif exists (select * from COMPUTERTABLE where PcNum pcnum)set pcid -1elsebegininser…

pandas mysql index_Pandas从入门到精通(3)- Pandas多级索引MultiIndex

首先了解一下什么是多级索引&#xff0c;以及它的作用&#xff0c;为什么要有这个玩意。多级索引也称为层次化索引(hierarchical indexing)&#xff0c;是指数据在一个轴上(行或者列)拥有多个(两个以上)索引级别。之所以引入多级索引&#xff0c;在于它可以使用户能以低维度形式…

tensorflow 启动多个session_Tensorflow源码解析7 -- TensorFlow分布式运行时

1 概述TensorFlow架构设计精巧&#xff0c;在后端运行时这一层&#xff0c;除了提供本地运行时外&#xff0c;还提供了分布式运行时。通过分布式训练&#xff0c;在多台机器上并行执行&#xff0c;大大提高了训练速度。前端用户通过session.run()启动系统执行时&#xff0c;tar…

shell swt 样式_SWT之路:SWT图像显示

简明现代魔法 -> Java编程语言 -> SWT之路&#xff1a;SWT图像显示SWT之路&#xff1a;SWT图像显示2009-10-03程序演示还是先用SWT Desiner创建界面程序。然后创建一个Display对象和Image对象&#xff0c;和一个GC对象。类org.eclipse.swt.graphics.GC是一个封装了所有可…

swool tcp mysql_swoole/mysql(异步)

# 异步Swoole\Mysql**(要求Workerman版本>3.3.6)**## 注意:此组件由swoole底层提供&#xff0c;由C语言编写&#xff0c;具有超高性能。## 安装&#xff1a;安装有swoole扩展即可## 示例&#xff1a;phprequire_once ../Autoloader.php;use Workerman\Worker;use \Swoole\My…

xamarin和mysql_Xamarin.Android 使用 SQLiteOpenHelper 进行数据库操作

一、前言在手机中进行网络连接不仅是耗时也是耗电的&#xff0c;而耗电却是致命的。所以我们就需要数据库帮助我们存储离线数据&#xff0c;以便在用户未使用网络的情况下也可以能够使用应用的部分功能&#xff0c;而在需要网络连接的功能上采用提示方式&#xff0c;让用户决定…

python 绝对值误差小于10-6_Python 被低估了的 10 个小技巧

hi&#xff0c;各位朋友们&#xff0c;小帅b回来啦&#xff0c;几日不见&#xff0c;想我了么&#xff1f;今天给大家分享几个我认为不错的 Python 小技巧&#xff0c;有些可能被你低估了哟&#xff0c;get 起来&#xff01;那么接下来就是&#xff1a;学习 Python 的正确姿势俗…

java bean验证_javaBean--登录验证

packagecom.JAVABean;importjava.util.HashMap;importjava.util.Map;publiccla***egister{privateStringname;privateStringage;privateStringemail;privateMaperrorsnull;//声明一个保存全部错误信息的map集合publicRegister(){//在构造方法中初始化属性this.name""…

java读取src xml文件路径_Java获取路径方法相对路径读取xml文件方法

(1)、request.getRealPath("/");//不推荐使用获取工程的根路径(2)、request.getRealPath(request.getRequestURI());//获取jsp的路径&#xff0c;这个方法比较好用&#xff0c;可以直接在servlet和jsp中使用(3)、request.getSession().getServletContext().getRealPa…

释放tcp连接的命令是_最实用的6个网络命令,网络故障不求人

很多弱电工程师朋友在项目中经常遇到一些网络故障&#xff0c;需要通过一些一些命令去检测、定位故障点&#xff0c;通过使用网络命令&#xff0c;故障解决的工作取得了事半功倍的效果。下面就一起温故而知新吧&#xff01;一、ping命令&#xff08;因特网包探索器&#xff09;…

airpods2怎么查正品 ios11系统_拼多多AirPods2开箱评测,4种办法教你验真假,10个AirPods技巧教你玩...

大家好&#xff0c;Apple今天给大家分享一下拼多多上车AirPods 2无线充电盒版的经验&#xff0c;顺便整理了一波AirPods使用技巧&#xff0c;希望你用得上。入手理由自从去年10月份入手了iPhone XR&#xff0c;其实就挺想入款无线耳机的&#xff0c;所以一直在等AirPods升级换代…

java中for break的用法_java break语句的使用方法

在switch语中,break语句用来终止switch语句的执行。使程序 switch语句后的第一个语句 开始执行。在Java中,可以为每个代码块加一个括号,一个代码块通常 用大括号{}括起来的一段 代码。加标号的格式break语句有两种形式&#xff1a;无标签和有标签。无标签的break语句用来跳出单…

windows文件保护_Windows系统下媲美时间机器的系统备份工具,统统免费

Windows和macOS系统谁更美&#xff1f;不同的人有不同的见解。但体验过macOS之后很多电脑玩家会感叹&#xff0c;TimeMachine时间机器太好用了&#xff0c;Windows下有没有同类功能呢&#xff1f;TimeMachine提供了全盘完整备份、增量备份、文件历史版本等功能。它们在Windows …

JAVA结课_一点心情,写java结课考试之前

突然发现&#xff0c;已经好久没有上来写blog了&#xff0c;本来还以为能够天天写&#xff0c;后来发现&#xff0c;确是心有余力而不足啊。学期进入中段&#xff0c;课业慢慢多了&#xff0c;各种各样的事情也接踵而来了。本学期的java课程也已经结课了&#xff0c;8周32个学时…