小编Mat*_*ler的帖子

如何在开发,测试和生产中管理数据库?

我很难找到如何在开发,测试和生产服务器之间管理数据库模式和数据的好例子.

这是我们的设置.每个开发人员都有一个运行我们的app和MySQL数据库的虚拟机.他们的个人沙箱可以随心所欲.目前,开发人员将对SQL模式进行更改,并将数据库转储到他们提交到SVN的文本文件中.

我们希望部署一个始终运行最新提交代码的持续集成开发服务器.如果我们现在这样做,它将从SVN为每个构建重新加载数据库.

我们有一个运行"候选版本"的测试(虚拟)服务器.部署到测试服务器目前是一个非常手动的过程,通常涉及我从SVN加载最新的SQL并进行调整.此外,测试服务器上的数据不一致.您最终得到了最后一个开发人员在沙盒服务器上提供的测试数据.

一切都崩溃的是部署到生产.由于我们无法使用测试数据覆盖实时数据,因此需要手动重新创建所有架构更改.如果有大量的架构更改或转换脚本来操纵数据,这可能会变得非常毛茸茸.

如果问题只是模式,那将是一个更容易解决的问题,但数据库中存在"基础"数据,在开发过程中也会更新,例如安全性和权限表中的元数据.

这是我在实现持续集成和一步构建方面遇到的最大障碍.如何解决呢?


后续问题:如何跟踪数据库版本,以便了解要运行哪些脚本来升级给定的数据库实例?Lance的版本表是否低于标准程序?


感谢您参考塔伦蒂诺.我不是在.NET环境中,但我发现他们的DataBaseChangeMangement维基页面非常有用.特别是这个Powerpoint演示文稿(.ppt)

我将编写一个Python脚本,它*.sql根据数据库中的表检查给定目录中脚本的名称,并根据构成文件名第一部分的整数按顺序运行那些脚本.如果这是一个非常简单的解决方案,我怀疑它会是,那么我会在这里发布.


我有一个工作脚本.如果数据库不存在,它会处理初始化数据库并根据需要运行升级脚本.还有用于擦除现有数据库和从文件导入测试数据的开关.这是大约200行,所以我不会发布它(虽然如果有兴趣我可能会把它放在pastebin上).

mysql svn

167
推荐指数
6
解决办法
3万
查看次数

修复SVN校验和

我在Flex Builder 3中使用了subclipse,最近在尝试提交时收到了这个错误:

svn: Checksum mismatch for '/Users/redacted/Documents/Flex Builder 3/path/to/my/file.mxml'; expected: 'f8cb275de72776657406154dd3c10348', actual: 'null'

我解决了以下问题:

  1. 提交所有其他已更改的文件,省略麻烦的文件.
  2. 将故障文件的内容复制到TextMate窗口
  3. 在FlexBuilder/Eclipse中删除我的项目
  4. 从SVN新出来检查我的项目
  5. 从TextMate窗口重新复制故障文件的文本
  6. 提交更改.

它奏效了,但我不禁想到有更好的方法.什么是导致svn:校验和错误,以及什么是最好的解决方案.

也许更重要的是 - 这是一个更大问题的症状吗?

subclipse svn

65
推荐指数
5
解决办法
7万
查看次数

SVN分支/合并活动的图形表示

您是否了解任何创建图表以显示SVN存储库中的分支/合并活动的工具?

我们都在各种教程中看到过这些图表.有些好,有些不太好.它们是否可以自动创建(或者可能有点刺激 - 如果你的分支理念是dev-test-prod,每次发布分支等,你可能需要告诉它们是什么)

我现在正在看TortoiseSVN修订图,但它有比我想要的更多细节和错误的布局.


猎户座,谢谢你的回应.我想,因为分支和合并更像是管理存储库中文件的约定,而不是"SVN的内置功能",所以这将非常困难.我会坚持在我们团队的白板顶部绘制得很糟糕的图表办公室.

svn

32
推荐指数
4
解决办法
3万
查看次数

用于粘贴代码的良好IM/Chat解决方案

我们有几个分布式开发人员在几个项目上合作.我们一直在使用Skype与所有开发人员进行聊天,除了一件事情之外它还可以:

它真的会破坏我们复制并粘贴到聊天中的任何代码 - 尤其是Python中的空格.

这个问题有很多关于聊天客户端和服务器的意见,但是对于粘贴代码没有人说得多.(/sf/ask/2549081/)

是否有人使用聊天或即时客户端来处理源代码真的很好?

chat copy-paste

7
推荐指数
1
解决办法
1037
查看次数

我是否需要担心Flex/AIR代码中的并发问题?

我有一种情况,我正在启动一些对象,当它们准备好处理一些输入数据时,调用一个处理程序.

该处理程序从待处理请求的ArrayCollection中获取数据集,将其分配给对象,并从ArrayCollection中删除数据集.

(我不能从ArrayCollection弹出,因为我需要搜索它以找到一个合适的数据集 - 它并不总是顶部的数据集.)

两个对象是否有可能以这样的方式调用我的处理程序:(1)第一个被分配数据集,(2)第二个被分配相同的数据集,然后服务于第一个的处理程序的实例删除了它,我猜(3)尝试从ArrayCollection中删除数据集时处理程序错误的第二个实例.

我对Flash Player运行时不熟悉,知道这种故障情况是否可行,或者我是否应该花些额外的时间来实现某种锁定以防止它出现.


编辑:到目前为止,答案为Flex提供了热烈的评论,但我不确定他们是否回答了这个问题.要清楚,我不是要决定是否使用Flex.

如果我有一个方法:

  1. 从ArrayCollection中的某处获取一段数据
  2. 与该数据有关
  3. 从ArrayCollection中删除该数据

在第一次调用#1之后但是在#3之前,是否可能另一次调用同一方法#1?

le dorfier,你说Flex/AS"正常" - 你能说明它在这种情况下会"正常工作"吗?

apache-flex air actionscript

4
推荐指数
1
解决办法
1182
查看次数

如何在 play.api.libs.json.JsValue 和 org.json4s.JValue 之间进行转换

我正在使用 Play Framework 来构建 API,但需要使用仅使用 Json4s 的库来执行一些验证和转换操作。

到目前为止,我唯一能够开始工作的是转换为字符串并使用目标库进行解析:

import org.json4s._
import org.json4s.jackson.JsonMethods._    
import play.api.libs.json._

val playJson: JsValue = Json.parse(compact(render(json4sJson)))
val json4sJson: JValue = parse(Json.stringify(playJson))
Run Code Online (Sandbox Code Playgroud)

但这显然是低效的,并且会产生丑陋的代码。有没有更好的办法?

scala playframework json4s play-json

3
推荐指数
1
解决办法
1951
查看次数