`
lijunaccp
  • 浏览: 160639 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

内置数据库之迷

阅读更多
对grails的内置数据库,刚开始接触会很奇怪,为什么每次启动服务器,创建的数据都没有了。
原因:
1.grails内置的数据库是hsqldb
2.查看grails-app/conf/DataSource.groovy文件
dataSource { //数据源的公共部分
    pooled = true
    driverClassName = "org.hsqldb.jdbcDriver"
    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:hsqldb:mem:testDb"   //数据存储到内存中
			//以上两点就是为什么在开发环境中会出现数据丢失的原因
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:mem:testDb"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:file:prodDb;shutdown=true"
        }
    }
}


注:对dbCreate三个值解释下,create-drop在上面代码中有讲,update每次启动服务只更新表,不删除表,create会让表保持不变,但在停上grails时,删除数据
修改方法:
1.用内置数据库可以改为文件形式存储
dataSource { //数据源的公共部分
    pooled = true
    driverClassName = "org.hsqldb.jdbcDriver"
    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 = "update" //有三个值'create', 'create-drop','update'
            url = "jdbc:hsqldb:file:prodDb;shutdown=true"   //文件形式存储后,启动服务器就不会丢失数据
        }
    }
    test {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:mem:testDb"
        }
    }
    production {
        dataSource {
            dbCreate = "update"
            url = "jdbc:hsqldb:file:prodDb;shutdown=true"
        }
    }
}


2.可以通过修改grails-app/conf/DataSource.groovy指定外部数据库,如:mysql
dataSource {   //数据源的公共部分
    pooled = true
	driverClassName = "com.mysql.jdbc.Driver"
	username = "root"
	password = "root"
        def dialect = org.hibernate.dialect.SQLServerDialect.class;
}
hibernate {
    cache.use_second_level_cache=true
    cache.use_query_cache=true
    cache.provider_class='org.hibernate.cache.EhCacheProvider'
}
// 根据环境设定数据源,会覆盖数据源的公共部分
environments {
	development {
		dataSource {
			dbCreate = "update" //有三个值'create', 'create-drop','update'
			url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"
		}
	}
	test {
		dataSource {
			dbCreate = "update" 
			url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"
		}
	}
	production {
		dataSource {
			dbCreate = "update" // one of 'create', 'create-drop','update'
			url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8"
		}
	}
}

分享到:
评论
1 楼 xiaotang890111 2011-06-21  
[color=orange][/color]

相关推荐

    SQLServer数据库终极设计优化技术

    7. **性能监控与调优**:学习使用SQL Server的内置工具(如SQL Server Management Studio, Profiler, Dynamic Management Views等)进行性能监控,识别瓶颈,并采取相应措施进行优化。 8. **事务与并发控制**:理解...

    计算机等考三级数据库基础:SQL数据库备份的基础知识.docx

    5. **备份与恢复**:使用SQL Server的内置备份和恢复机制,可以进行完全备份,并将备份文件复制到目标服务器进行恢复。这种方法可以恢复所有数据库元素,包括外键、主键和索引。 6. **直接复制数据文件**:直接拷贝...

    计算机等考三级数据库基础:一次TempDB损毁的处理过程.docx

    ChkDsk是一个用于检查并修复磁盘错误的Windows内置工具。在本例中,使用ChkDsk /F参数来修复Disk G::的错误,/F参数表示强制修复磁盘错误。 4. **SQL Server错误代码17055**: 错误17055表明数据库'tempdb'无法...

    SQLServer数据库游标和函数的使用(经典)

    SQL Server提供多种内置函数,如数学函数、字符串函数、日期时间函数等。函数通常使查询更简洁,提高可读性。 1. 数学函数:例如,`ABS()`返回绝对值,`SQRT()`计算平方根,`POWER()`执行幂运算。 2. 字符串函数:...

    计算机等考三级数据库基础:把表的所有字段名输出到一个字段中.docx

    首先,我们需要了解SQL中的系统视图`SysColumns`,这是一个非常有用的内置视图,它提供了关于数据库中所有列的信息,包括列名(`Name`)、所属对象的ID(`ID`)等。在示例中,`SysColumns`被用来获取名为`Tb_Article...

    计算机等考三级数据库辅导:适用于SQLServer生产环境DBA的七大技巧.docx

    在SQL Server 2005中,Windows内置的Administrators组默认不具有sysadmin权限。当需要紧急获取该权限时,可以通过将SQL Server启动到单用户模式,然后在Sqlcmd环境中运行sp_addsrvrolemember,将Windows登录添加到...

    计算机等考三级数据库基础:怎样在PB中实现文件的拷贝与删除.docx

    在计算机等考三级数据库基础的学习中,掌握如何在PowerBuilder (PB)环境中实现文件的拷贝与删除是重要的实践技能之一。PB作为一个强大的数据库开发工具,提供了多种方式来操作文件系统。下面将详细介绍如何在PB中...

    计算机等考三级数据库辅导:使用GUID作为数据表主键的好处.docx

    综上,选择使用GUID作为主键的优势在于其在分布式和离线环境下的高效处理能力以及内置的唯一性保证。然而,这也意味着可能牺牲了一定的顺序性和简单性。在设计数据库时,应根据具体应用的需求和场景来权衡选择哪种...

    AspNetCoreProject:数据库,API,Blazor服务器

    ASP.NET Core支持多种数据库系统,包括关系型数据库如SQL Server、MySQL,以及NoSQL数据库如MongoDB。在本项目中,很可能使用Entity Framework Core作为ORM(对象关系映射)工具,它简化了与数据库的交互。开发者...

    SQL SERVER 2008 R2安装视频教程

    在IT领域,数据库管理系统是核心组成部分之一,而SQL Server 2008 R2是Microsoft公司推出的一款强大的关系型数据库管理系统。本教程专注于在Windows Server 2008环境中安装SQL Server 2008 R2的过程,对于初学者或者...

    一个web版的图片猜谜游戏

    【描述】:ASP.NET框架是基于.NET Framework的,它提供了丰富的功能和组件,如页面生命周期管理、内置的安全机制、数据绑定以及状态管理等,使得开发者能够高效地构建功能丰富的Web应用。在这个图片猜谜游戏中,...

    c#理财软件

    - C#理财软件的基础通常建立在.NET Framework或.NET Core之上,两者都提供了一整套开发工具和服务,便于创建跨平台的金融应用。 - 使用Visual Studio作为集成开发环境(IDE),可以提高开发效率,提供强大的调试和...

    python DVD 管理器

    3. 数据库连接:更高级的实现可能涉及与数据库(如SQLite、MySQL)的交互,通过Python的数据库API(如`sqlite3`模块)连接和查询数据,提供更高效的数据管理和检索能力。 4. 输入/输出处理:使用`input()`函数获取...

    基于PHP的Q迷网整站带数据php版源码.zip

    它的语法简洁,学习曲线相对平缓,支持多种数据库连接,如MySQL,提供丰富的内置函数和类库,方便开发者快速构建功能。 2. **MVC架构**:许多PHP网站采用Model-View-Controller(MVC)设计模式,将业务逻辑、数据...

    redis2.4.5 64/32位

    描述中提到"里面有无迷版和有密版",这可能是指该压缩包中包含了带图形界面的版本(无谜版,通常用于测试和学习)和纯命令行版本(有密版,更轻量级且适用于生产环境)。"64/32位系统都有"确保了无论用户使用哪种...

    在Go中使用迷人的CLI库构建受taskwarrior启发的任务跟踪器的教程.zip

    这可能涉及到数据存储,如使用文件、数据库或其他持久化存储。我们可以使用Go的`encoding/json`包将任务对象序列化和反序列化,以便保存和加载。 4. **主程序**:最后,我们需要创建一个`main`函数,用于设置应用...

    PowerBuilder函数大全

    它提供了丰富的内置函数,使得开发者可以方便地处理数据、字符串、日期时间等。本文将详细探讨PB中的常用函数,帮助您更好地理解和应用这些功能。 1. **数据类型转换函数** - `ToString()`:将数值或其他数据类型...

    online-quiz-system:基于PHP,JS和HTML的在线测验系统。 它具有内置的计时器支持以及管理面板

    它具有内置的计时器支持以及管理面板 该项目是Sunny Prakash Tiwari( )创建的'Online-Exam-System-'的重大改进。 由于它是根据麻省理工学院(MIT)许可的,因此我认为我有权对其进行改进和重新分发。 我再次获得...

    yoyo-migrations:yoyo-migrations的分支,修复了一些错误

    local_infile = 1Yoyo数据库迁移Yoyo是一个使用简单SQL和python内置DB-API的数据库模式迁移工具。yoyo迁移有什么作用? 随着数据库应用程序的发展,通常需要对数据库架构进行更改。 这些通常可以编写为包含CREATE / ...

    用asp.net开发的论坛(forum)源代码

    在ASP.NET中,可以使用内置的 membership 和 role management API 来处理用户身份验证和授权。通过创建自定义用户控件或使用ASP.NET MVC的视图和控制器,可以实现用户界面的交互。 2. **主题和帖子**:在论坛中,...

Global site tag (gtag.js) - Google Analytics