mysql数据库

mysql的ACID的理解

 ̄綄美尐妖づ 提交于 2020-01-24 10:16:05
这是在网上copy下来的ACID的概念,可以直接跳过看后面: 1、原子性(Atomicity):事务开始后所有操作,要么全部做完,要么全部不做,不可能停滞在中间环节。事务执行过程中出错,会回滚到事务开始前的状态,所有的操作就像没有发生一样。也就是说事务是一个不可分割的整体,就像化学中学过的原子,是物质构成的基本单位。 2、一致性(Consistency):事务开始前和结束后,数据库的完整性约束没有被破坏 。比如A向B转账,不可能A扣了钱,B却没收到。 3、隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。比如A正在从一张银行卡中取钱,在A取钱的过程结束前,B不能向这张卡转账。 4、持久性(Durability):事务完成后,事务对数据库的所有更新将被保存到数据库,不能回滚。 其中,原子性和持久性的概念比较好理解。但是最近发现老是把一致性和隔离性混淆。 个人理解,隔离性主要是针对读操作的。在不同事务之间,读操作隔离。比如另一个事务对数据修改后,会不会影响当前事务的读操作,要不要读到更新后的数据。 一致性,主要强调的是数据的更新是不是“正确”,即,是不是符合我们的预期,这个和读操作应该是要分开看待的,这里应该只强调写操作。 造成我对这俩个概念的混淆的原因是,在java的并发编程中,我们关注的似乎只有一致性

Java程序员们,请永远不要在MySQL中使用utf8,改用utf8mb4!

放肆的年华 提交于 2020-01-24 09:42:06
最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误: Incorrect string value: ‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1 我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串“ <…”也是合法的UTF-8。 问题的症结在于,MySQL的“utf8”实际上不是真正的UTF-8。 “utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。 MySQL一直没有修复这个bug,他们在2010年发布了一个叫作“utf8mb4”的字符集,绕过了这个问题。 当然,他们并没有对新的字符集广而告之。 MySQL的“utf8mb4”是真正的“UTF-8” MySQL的“utf8”是一种“专属的编码”,它能够编码的Unicode字符并不多。 所有在使用“utf8”的MySQL和MariaDB用户都应该改用“utf8mb4”,永远都不要再使用“utf8”。 那么什么是编码?什么是UTF-8? 我们都知道,计算机使用0和1来存储文本。比如字符“C”被存成“01000011”,那么计算机在显示这个字符时需要经过两个步骤: 计算机读取“01000011”,得到数字67

PHP手动搭建环境

孤街浪徒 提交于 2020-01-24 06:22:00
php手动搭建环境有好多种组合,版本号不一致,会导致搭建失败。 我搭建的组合是: php5.6+MySQL5.6+Apache2.4的组合。 一、PHP语言包下载 首先从官网上下载php5.6 http://windows.php.net/download#php-5.6 选择完整版下载: 二、 Apache服务器下载 首先从官网上下载Apache2.4 http://httpd.apache.org/download.cgi 进入第二个界面,选择第二个选项: 根据电脑的不同,选择相应的位数: 注意有句话: 大体意思是,配置好Apache之后,要运行ApacheMonitor.exe,可能会报缺少dll文件,如果报缺少文件,需要下载这个软件。 下载好Apache2.4之后继续下载MySQL 5.6。 三、MySQL 5.6服务的下载。 我使用的是mysql5.6.17这个版本 官网下载地址: https://dev.mysql.com/doc/relnotes/mysql/5.6/en/news-5-6-17.html 可能官网下载会比较慢,也可以直接网上找。 这个文件有两种,一种是安装版(msi结尾的文件),还有一种是免安装版(zip结尾的文件) 两种都可以。 注意:之前数据库里有东西最好备份一下 我使用的是免安装版,自己觉得这个版本产生的错误比较少。下面介绍免安装版的配制方法:

mysql导入报错【The MySQL server is running with the --event-scheduler=DISABLED】

蹲街弑〆低调 提交于 2020-01-24 06:21:00
一、问题:   在进行mysql操作导入库的时候,报出了【The MySQL server is running with the --event-scheduler=DISABLED】   查看后台日志是事件没有开启 二、解决:   找到mysql的库配置文件【my.ini】   (1)skip-grant-tables 选项注释掉   (2)event_scheduler=ON 添加该选项 三、总结:   在从服务器上备份库,本地或者其它地方导入的时候会报出许多莫名的问题   一般报错后,会在数据库的日志文件中打印错误的日志,只需要认真查看日志报错原因,即可针对性的解决,不用慌!   参考文章:【 https://blog.csdn.net/magius/article/details/54341727 】 来源: https://www.cnblogs.com/hackxiyu/p/8915952.html

MySQL数据库出现too many connections问题时如何解决

ⅰ亾dé卋堺 提交于 2020-01-24 05:12:28
报错 当要连接mysql数据库时,发现连接不上并报出 “Can not connect to MySQL server. Too many connections”-mysql 1040 错误 这是因为访问mysql且还未释放的连接数目已经达到mysql的上限 如何解决 首先查看当前数据库最大连接数 show variables like ‘max_connections’; 可以看到当前的最大连接数是2000 查看当前所有用户的连接概况 _show processlist; _ 如果是root帐号,你能看到所有用户的当前连接。如果是其它普通帐号,只能看到自己占用的连接 只列出前100条,如果想全列出请使用 show full processlist; 可以看到当前的所有用户的总连接数,如何你出现了too many connections的问题,会发现目前的总连接数非常接近最大连接数 修改最大连接数 set GLOBAL max_connections = 5000; 如果服务器可以的话,将最大连接数修改大,修改之后,再查询一次最大连接数,会发现max_connections已经变成改大之后的数值 修改mysql配置文件my.cnf 上述完成的操作只是临时修改了mysql数据库的最大连接数,一旦数据库重启就会失效,因为mysql启动后会从其配置文件中读取数据的

Java连接远程Mysql过程中遇到的各种问题

只愿长相守 提交于 2020-01-24 04:23:24
2018-11-16 10:46 2018-11-19 21:35 前言   本篇文章记录的是本人在 使用Java程序 连接 另一台电脑 (同一局域网) 上的Mysql数据库 的过程中遇到的各种问题及解决方案。希望能给遇到同样问题的人提供一些帮助。当初本人遇到这些问题的时候,也是在各位大神的博客中找到的答案,本篇博客在某种程度上也算是这几个问题的答案集合吧。 软件环境   客户端: Windows10 + Java [ IP: 192.168.76.10 ]   数据库服务端: Ubuntu 16.04 + Mysql 14.14 [ IP: 192.168.76.1 ]   服务端的Mysql就是用最普通的 apt-get install 命令来安装的。安装完以后没有其它任何设置操作。 客户端使用的Java代码 1 final String driver = "org.gjt.mm.mysql.Driver"; 2 final String url = "jdbc:mysql://192.168.76.1:3306/mysql"; 3 final String user = "root"; 4 final String password = "123456"; 5 Connection conn = null; 6 PreparedStatement pstmt = null;

MYSQL 增加语句(数据)

蓝咒 提交于 2020-01-24 04:11:08
增加数据 如果你失忆了,希望你能想起曾经为了追求梦想的你。 前一节我们学习了查询语句 SELECT,这节课,我们学习增加 INSERT INTO **** VALUES ****,基本的语句 首先看看我们的数据库、表、字段: 数据库名: 表名: 字段: 我这里使用的工具是:Navicat for MySQL(同事都用这个,我也只好用咯,同学们若用的工具比较少,要记得扩展喔) 增加语句(第一种):INSERT INTO cs_user VALUES (null,'阿里','wodemima','男',22); 效果: 增加语句(第二种):INSERT INTO cs_user(username,password) VALUES ('巴巴','baba'); 效果: 解释: 第一种:这个表有5个字段,那么你就要写5个数据,并且数据的顺序要对应字段的顺序,id 是主键并自增长,所以在 VALUES 里写入 NULL 即刻,自动增加,每次+1,数字类型,可以直接写数字,字符串类型,比如带单引号或双引号(不能使用中文的) 第二种:在cs_user 表的后面加入了字段名(以逗号隔开),因为id是自动增长,所以我们可以不用写,这里我们写的字段是 username和password,所以添加数据,也只写入这两个就可以了,其他的字段,不需要理会 两种写法的差异: 1:表名后面有没有跟字段名; 2

MySQL数据库基本操作总结

99封情书 提交于 2020-01-24 03:10:37
文章目录 1.登陆操作 2.登出操作 3.行间操作 4.显示数据库版本 5.显示时间 6.数据库操作 7.数据表的操作 1.登陆操作 mysql - u 用户名 - p [ 密码 ] 例如: [ root @localhost ~ ] # mysql -u root -p Enter password: . . . 省略内容 mysql > 或者 [ root @localhost ~ ] # mysql -u root -pabc123 . . . 省略内容 mysql > '//两种方式都可以成功登陆' 2.登出操作 方法一:mysql> quit 方法二:mysql> exit 方法三:mysql> Ctrl + d 3.行间操作 Ctrl + a '//快速回到行首' Ctrl + e '//回到行尾' Ctrl + l '//清屏' Ctrl + c '//取消本次编辑' 4.显示数据库版本 select version ( ) ; 例如 mysql > select version ( ) ; + -----------+ | version ( ) | + -----------+ | 5.7 .17 | + -----------+ 1 row in set ( 0.00 sec ) 5.显示时间 select now ( ) ; 例如 mysql> select

Docker 使用指南 (六)—— 使用 Docker 部署 Django 容器栈

守給你的承諾、 提交于 2020-01-24 02:48:46
版权声明:本文由田飞雨原创文章,转载请注明出处: 文章原文链接: https://www.qcloud.com/community/article/98 来源:腾云阁 https://www.qcloud.com/community 使用 Docker 部署 Django 应用程序 本次实验环境: 腾讯云服务器 CentOS 6.7 x86_64 由于 Docker Hub 的镜像在国内下载速度非常慢,所以此次使用的都是 daocloud 提供的镜像。 Docker 部署 Django 应用可以通过两种方式来完成:迭代构建和容器互联。以下使用容器互联的方式搭建 Django 容器栈。 所需镜像 Docker version 1.7.1 daocloud.io/nginx:1.11 daocloud.io/python:2.7 daocloud.io/mysql:5.6 daocloud.io/django:1.9 容器创建的顺序: mysql --> redis --> django --> nginx 构建镜像前请先下载好所有所需的镜像。 1. 创建 mysql 容器 首先创建一个用于构建容器的目录: # mkdir /docker # cd /docker/ 然后创建好以下几个目录用于存放相应的文件: ├── mysql │ ├── conf.d │ │ ├── jianshu

linux下安装jsp开发运行环境(centos7)

谁都会走 提交于 2020-01-24 02:39:21
1 开发环境包括   1)apache-tomcat   2)java-jdk   3)mysql 2 apache-tomcat安装(应该先装java再装tomcat)   1)到官网下载最新版本(不建议用yum安装)   2)解压到你喜欢的目录(比如/usr/tomcat)   3)启动     /usr/tomcat/apache-tomcat-7.0.85/bin/./startup.sh   4)设置为开机启动     a. vi /usr/tomcat/apache-tomcat-7.0.85/bin/setclasspath.sh       末端添加:          export JAVA_HOME=/usr/java/jdk1. 7.0_71(你安装java的路径)          export JRE_HOME=/usr/java/jdk1. 7.0_71/jre     b. vi /usr/tomcat/apache-tomcat-7.0.85/bin/setenv.sh        #add tomcat pid       CATALINA_PID= "$CATALINA_BASE/tomcat.pid"        #add java opts       JAVA_OPTS= "-server -XX:PermSize=256M -XX