我的编程空间,编程开发者的网络收藏夹
学习永远不晚

免安装原生产环境的MySQL是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

免安装原生产环境的MySQL是什么

这篇文章主要介绍“免安装原生产环境的MySQL是什么”,在日常操作中,相信很多人在免安装原生产环境的MySQL是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”免安装原生产环境的MySQL是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

就是它:

<dependency>        <groupId>com.wix</groupId>        <artifactId>wix-embedded-mysql</artifactId>        <version>x.y.z</version>        <scope>test</scope> </dependency>

代码也简单,直接定义你需要的版本,数据库信息,把要初始化的SQL 给它,走起。

MysqldConfig config = aMysqldConfig(v5_6_23) //这里是版本   .withCharset(UTF8)   .withPort(2215)   .withUser("user1", "pwd2")   .withTimeZone("Europe/Vilnius")   .withTimeout(2, TimeUnit.MINUTES)   .withServerVariable("max_connect_errors", 666)   .build();  EmbeddedMysql mysqld = anEmbeddedMysql(config)   .addSchema("aschema", ScriptResolver.classPathScript("db/001_init.sql"))   .start();  //do work  mysqld.stop(); //optional, as there is a shutdown hook

这有啥优势:

  • 测试可以跑在和生产环境基本一致的环境,同样的版本,同样的编码和配置,database/schema/user settings 等等

  • 比安装一个更容易,想切换版本,改配置也更轻松;

  • 本地每个项目可以使用不同的版本,不同的配置,啥都不用担心;

  • 对于MySQL的多个版本支持 - 5.5, 5.6, 5.7, 8.0;

  • 多种平台和环境都支持。

原理

这背后是怎么实现的呢?

咱们是「刨根究底」公众号,一起来看看。

上面代码配置之后的 start ,到底 start 了啥?

咱们看下面这几小段代码:

protected EmbeddedMysql(             final MysqldConfig mysqldConfig,             final DownloadConfig downloadConfig) {         this.config = mysqldConfig;         IRuntimeConfig runtimeConfig = new RuntimeConfigBuilder().defaults(mysqldConfig, downloadConfig).build();         MysqldStarter mysqldStarter = new MysqldStarter(runtimeConfig);         localRepository.lock();         try {             this.executable = mysqldStarter.prepare(mysqldConfig);         } finally {             localRepository.unlock();         }          try {             executable.start();             getClient(SCHEMA, mysqldConfig.getCharset()).executeCommands(                     format("CREATE USER '%s'@'%%' IDENTIFIED BY '%s';", mysqldConfig.getUsername(), mysqldConfig.getPassword()));         } catch (IOException e) {             throw new RuntimeException(e);         }     }
protected MysqldProcess start(             final Distribution distribution,             final MysqldConfig config,             final IRuntimeConfig runtime) throws IOException {         logger.info("Preparing mysqld for startup");         Setup.apply(config, executable, runtime);         logger.info("Starting MysqldProcess");         return new MysqldProcess(distribution, config, runtime, this);     }

其实这背后依赖了一个叫embed.process的开源项目,

免安装原生产环境的MySQL是什么

public AbstractProcess(Distribution distribution, T config, IRuntimeConfig runtimeConfig, E executable)       throws IOException {     this.config = config;     this.runtimeConfig = runtimeConfig;     this.executable = executable;     this.distribution = distribution;     // pid file needs to be set before ProcessBuilder is called     this.pidFile = pidFile(this.executable.getFile().executable());      ProcessOutput outputConfig = runtimeConfig.getProcessOutput();      // Refactor me - to much things done in this try/catch     String nextCall="";     try {        nextCall="onBeforeProcess()";        onBeforeProcess(runtimeConfig);        nextCall="newProcessBuilder()";        ProcessBuilder processBuilder = ProcessControl.newProcessBuilder(           runtimeConfig.getCommandLinePostProcessor().process(distribution,               getCommandLine(distribution, config, this.executable.getFile())),           getEnvironment(distribution, config, this.executable.getFile()), true);         nextCall="onBeforeProcessStart()";        onBeforeProcessStart(processBuilder, config, runtimeConfig);        nextCall="start()";        process = ProcessControl.start(config.supportConfig(), processBuilder);        nextCall="writePidFile()";        if (process.getPid() != null) {         writePidFile(pidFile, process.getPid());       }        nextCall="addShutdownHook()";        if (runtimeConfig.isDaemonProcess() && !executable.isRegisteredJobKiller()) {         ProcessControl.addShutdownHook(new JobKiller());         registeredJobKiller = true;       }        nextCall="onAfterProcessStart()";       onAfterProcessStart(process, runtimeConfig);     } catch (IOException iox) {       stop();       throw iox;     }   }

它又操作了什么呢?从名字你也猜到了,它是直接操作进程的,实际在运行时,会下载一个MySQL,然后通过脚本启停。

免安装原生产环境的MySQL是什么

初次启动的时候,会直接下载

免安装原生产环境的MySQL是什么

有了这些,在测试的时候就可以和生产环境一样,启动时加载初始化SQL脚本,开始你的工作了。

github地址:https://github.com/wix/wix-embedded-mysql

到此,关于“免安装原生产环境的MySQL是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

免安装原生产环境的MySQL是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

生产环境MySQL索引时效的排查过程是什么

今天小编给大家分享一下生产环境MySQL索引时效的排查过程是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。问题:mysq
2023-06-29

mysql query error产生的原因是什么

MySQL查询错误可能有多种原因,包括但不限于以下几种:1. 语法错误:查询语句的语法错误是最常见的错误之一。例如,缺少关键字、拼写错误、不正确的引号使用等等。这些错误可以通过检查查询语句的语法并进行修正来解决。2. 表或列不存在:在查询中
2023-08-31

nodejs生产环境部署vue的方法是什么

这篇“nodejs生产环境部署vue的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“nodejs生产环境部署vue
2023-07-06

Nginx生产环境平滑升级的方法是什么

这篇“Nginx生产环境平滑升级的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Nginx生产环境平滑升级的方法是
2023-07-05

Linux生产环境上Sed使用技巧是什么

今天小编给大家分享一下Linux生产环境上Sed使用技巧是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一个简单的入门一
2023-06-15

oracle安装的硬件环境是什么

oracle 数据库安装的硬件环境要求包括:认证服务器:具有足够处理能力、内存和冗余组件。多核 cpu:高时钟频率和多个内核。充足内存:满足工作负载需求。高性能存储:ssd 或混合存储阵列(raid 配置)。稳定网络:可接受的带宽和延迟。兼
oracle安装的硬件环境是什么
2024-05-10

Python安装环境搭建的方法是什么

这篇文章主要讲解了“Python安装环境搭建的方法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python安装环境搭建的方法是什么”吧!windows7/10 + Python3.6
2023-06-01

windows电流麦产生的原因是什么

今天小编给大家分享一下windows电流麦产生的原因是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1、首先就可能是因为
2023-07-02

linux中产生死锁的原因是什么

这篇“linux中产生死锁的原因是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux中产生死锁的原因是什么”文章吧
2023-06-29

Python中死锁产生的原因是什么

这篇文章给大家介绍Python中死锁产生的原因是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;4、嵌入式应用开发;5
2023-06-14

tomcat配置环境及安装的方法是什么

Tomcat是一种常用的Java Servlet容器,可以运行Java Web应用程序。下面是Tomcat的配置环境及安装方法:1. 下载Tomcat:从Tomcat官网(https://tomcat.apache.org/)下载最新版本的
2023-06-13

nodejs安装及环境配置的方法是什么

要安装并配置Node.js环境,可以按照以下步骤进行:1. 下载Node.js安装包:在Node.js官方网站 (https://nodejs.org) 上下载适合你操作系统的Node.js安装包。2. 安装Node.js:运行下载的安装包
2023-08-24

nodejs环境安装和配置的方法是什么

安装和配置Node.js环境的方法如下:访问Node.js官方网站(https://nodejs.org/)下载对应操作系统的安装包。执行安装包进行安装。根据操作系统选择合适的安装包,双击运行安装程序,按照提示完成安装。验证安装是否成功。打
2023-10-26

Linux安装PHP环境具体步骤是什么

Linux安装PHP环境具体步骤是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。PHP即“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发
2023-06-28

导致SELinux警告产生的原因是什么

本篇内容主要讲解“导致SELinux警告产生的原因是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“导致SELinux警告产生的原因是什么”吧!原因一:出现标注错误 SELinux 的核心概念
2023-06-13

编程热搜

目录