热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

grailsmysql_grails连接mysql

Grails切换到mysql数据库需要做如下的配置:1、将mysql-connector-java-5.1.22-bin.jar驱动复制到Grails应用的根目录li

Grails切换到

mysql

数据库需要做如下的配置:

1、将my

sql-connector-java-5.1.22-bin.jar驱动复制到Grails应用的根目录lib下面。

2、修改conf/DataSource.groovy;Grails默认用的是H2

数据库,我们需要将driverClassName = "org.h2.Driver" 改成 driverClassName = '

com.mysql.jdbc.Driver';url改成我们自己数据库的url

上面的改法会发生几个问题,

1、如果单纯光把驱动复制到lib目录,会发生异常:

java.lang.ClassNotFoundException: com/mysql/jdbc/Driver

找不到这个驱动,此时我们还需要在BuildConfig.groovy文件中加入下面的配置:

dependencies {

runtime 'mysql:mysql-connector-java:5.1.22'

}

2、尽管我们自己的应用用的是mysql,但是可能某些插件或者框架用的是H2数据库,这样如果我们之配置mysql的数据源,可能导致数据库连接驱动不匹配的异常。

因此我们需要保留原来的数据源配置,另外添加mysql的数据源。

dataSource {

pooled = true

driverClassName = "org.h2.Driver"

username = "sa"

password = ""

}

hibernate {

cache.use_second_level_cache = true

cache.use_query_cache = false

cache.region.factory_class = '

net.sf.ehcache.hibernate.EhCacheRegionFactory'

}

// environment specific settings

environments {

development {

dataSource {

dbCreate = "create-drop" // one of 'create', 'create-drop', 'update', 'validate', ''

url = "jdbc:h2:mem:devDb;M

VCC=TRUE;LOCK_TIMEOUT=10000"

}

dataSource_mysql {

dialect = org.hibernate.dialect.MySQLInnoDBDialect

driverClassName = 'com.mysql.jdbc.Driver'

username = 'root'

password = 'root'

url = 'jdbc:mysql://localhost/DojoGrails'

dbCreate = 'update'

}

}

test {

dataSource {

dbCreate = "update"

url = "jdbc:h2:mem:testDb;

MVCC=TRUE;LOCK_TIMEOUT=10000"

}

}

production {

dataSource {

dbCreate = "update"

url = "jdbc:h2:prodDb;MVCC=TRUE;LOCK_TIMEOUT=10000"

pooled = true

properties {

maxActive = -1

minEvictableIdleTimeMillis=1800000

timeBetweenEvictionRunsMillis=1800000

numTestsPerEvictionRun=3

testOnBorrow=true

testWhileIdle=true

testOnReturn=true

validationQuery="SELECT 1"

}

}

}

}

上面是DataSource配置的例子,添加了第二个数据源 dataSource_mysql

在这个多数据源应用里,我们需要在使用dataSource_mysql数据源的domain类里加入如下配置:

static map

ping = {

datasource 'mysql'

}

以表明这个domain用的是哪个数据源;

~~~~~~~~~~~~~~

官方对多数据源的说明:

Configuring Additional DataSources

The default DataSource configuration in grails-app/conf/DataSource.groovy looks something like this:

dataSource {

pooled = true

driverClassName = "org.h2.Driver"

username = "sa"

password = ""

}

hibernate {

cache.use_second_level_cache = true

cache.use_query_cache = true

cache.provider_class = 'net.sf.ehcache.hibernate.EhCacheProvider'

}

environments {

development {

dataSource {

dbCreate = "create-drop"

url = "jdbc:h2:mem:devDb"

}

}

test {

dataSource {

dbCreate = "update"

url = "jdbc:h2:mem:testDb"

}

}

production {

dataSource {

dbCreate = "update"

url = "jdbc:h2:prodDb"

}

}

}

This configures a single DataSource with the Spring bean named dataSource. To configure extra DataSources, add another dataSource block (at the top level, in an environment block, or both, just like the standard DataSource definition) with a custom name, separated by an underscore. For example, this configuration adds a second DataSource, using MySQL in the development environment and

Oracle in production: environments {     development {         dataSource {             dbCreate = "create-drop"             url = "jdbc:h2:mem:devDb"         }         dataSource_lookup {             dialect = org.hibernate.dialect.MySQLInnoDBDialect             driverClassName = 'com.mysql.jdbc.Driver'             username = 'lookup'             password = 'secret'             url = 'jdbc:mysql://localhost/lookup'             dbCreate = 'update'         }     }     test {         dataSource {             dbCreate = "update"             url = "jdbc:h2:mem:testDb"         }     }     production {         dataSource {             dbCreate = "update"             url = "jdbc:h2:prodDb"         }         dataSource_lookup {             dialect = org.hibernate.dialect.Oracle10gDialect             driverClassName = 'oracle.jdbc.driver.OracleDriver'             username = 'lookup'             password = 'secret'             url = 'jdbc:oracle:thin:@localhost:1521:lookup'             dbCreate = 'update'         }     } } You can use the same or different databases as long as they're supported by Hibernate. Configuring Domain Classes If a domain class has no DataSource configuration, it defaults to the standard 'dataSource'. Set the datasource property in the mapping block to configure a non-default DataSource. For example, if you want to use the ZipCode domain to use the 'lookup' DataSource, configure it like this; class ZipCode {    String code    static mapping = {       datasource 'lookup'    } } A domain class can also use two or more DataSources. Use the datasources property with a list of names to configure more than one, for example: class ZipCode {    String code    static mapping = {       datasources(['lookup', 'auditing'])    } } If a domain class uses the default DataSource and one or more others, use the special name 'DEFAULT' to indicate the default DataSource: class ZipCode {    String code    static mapping = {       datasources(['lookup', 'DEFAULT'])    } } If a domain class uses all configured DataSources use the special value 'ALL': class ZipCode {    String code    static mapping = {       datasource 'ALL'    } }



推荐阅读
  • php缓存ri,浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
    thinkPHP的F方法只能用于缓存简单数据类型,不支持有效期和缓存对象。S()缓存方法支持有效期,又称动态缓存方法。本文是小编日常整理有关thinkp ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Android系统源码分析Zygote和SystemServer启动过程详解
    本文详细解析了Android系统源码中Zygote和SystemServer的启动过程。首先介绍了系统framework层启动的内容,帮助理解四大组件的启动和管理过程。接着介绍了AMS、PMS等系统服务的作用和调用方式。然后详细分析了Zygote的启动过程,解释了Zygote在Android启动过程中的决定作用。最后通过时序图展示了整个过程。 ... [详细]
  • 本文介绍了在MacOS系统上安装MySQL的步骤,并详细说明了如何设置MySQL服务的开机启动和如何修改MySQL的密码。通过下载MySQL的macos版本并按照提示一步一步安装,在系统偏好设置中可以找到MySQL的图标进行设置。同时,还介绍了通过终端命令来修改MySQL的密码的具体操作步骤。 ... [详细]
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
  • 本文介绍了如何使用PHP代码将表格导出为UTF8格式的Excel文件。首先,需要连接到数据库并获取表格的列名。然后,设置文件名和文件指针,并将内容写入文件。最后,设置响应头部,将文件作为附件下载。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • MySQL数据库锁机制及其应用(数据库锁的概念)
    本文介绍了MySQL数据库锁机制及其应用。数据库锁是计算机协调多个进程或线程并发访问某一资源的机制,在数据库中,数据是一种供许多用户共享的资源,如何保证数据并发访问的一致性和有效性是数据库必须解决的问题。MySQL的锁机制相对简单,不同的存储引擎支持不同的锁机制,主要包括表级锁、行级锁和页面锁。本文详细介绍了MySQL表级锁的锁模式和特点,以及行级锁和页面锁的特点和应用场景。同时还讨论了锁冲突对数据库并发访问性能的影响。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • mysqldinitializeconsole失败_mysql03误删除了所有用户解决办法
    误删除了所有用户解决办法第一种方法(企业常用)1.将数据库down掉[rootdb03mysql]#etcinit.dmysqldstopShuttingdownMySQL..SU ... [详细]
author-avatar
颂春堂中药
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有