我很难找到如何在开发,测试和生产服务器之间管理数据库模式和数据的好例子.
这是我们的设置.每个开发人员都有一个运行我们的app和MySQL数据库的虚拟机.他们的个人沙箱可以随心所欲.目前,开发人员将对SQL模式进行更改,并将数据库转储到他们提交到SVN的文本文件中.
我们希望部署一个始终运行最新提交代码的持续集成开发服务器.如果我们现在这样做,它将从SVN为每个构建重新加载数据库.
我们有一个运行"候选版本"的测试(虚拟)服务器.部署到测试服务器目前是一个非常手动的过程,通常涉及我从SVN加载最新的SQL并进行调整.此外,测试服务器上的数据不一致.您最终得到了最后一个开发人员在沙盒服务器上提供的测试数据.
一切都崩溃的是部署到生产.由于我们无法使用测试数据覆盖实时数据,因此需要手动重新创建所有架构更改.如果有大量的架构更改或转换脚本来操纵数据,这可能会变得非常毛茸茸.
如果问题只是模式,那将是一个更容易解决的问题,但数据库中存在"基础"数据,在开发过程中也会更新,例如安全性和权限表中的元数据.
这是我在实现持续集成和一步构建方面遇到的最大障碍.如何你解决呢?
后续问题:如何跟踪数据库版本,以便了解要运行哪些脚本来升级给定的数据库实例?Lance的版本表是否低于标准程序?
感谢您参考塔伦蒂诺.我不是在.NET环境中,但我发现他们的DataBaseChangeMangement维基页面非常有用.特别是这个Powerpoint演示文稿(.ppt)
我将编写一个Python脚本,它*.sql根据数据库中的表检查给定目录中脚本的名称,并根据构成文件名第一部分的整数按顺序运行那些脚本.如果这是一个非常简单的解决方案,我怀疑它会是,那么我会在这里发布.
我有一个工作脚本.如果数据库不存在,它会处理初始化数据库并根据需要运行升级脚本.还有用于擦除现有数据库和从文件导入测试数据的开关.这是大约200行,所以我不会发布它(虽然如果有兴趣我可能会把它放在pastebin上).
我在Flex Builder 3中使用了subclipse,最近在尝试提交时收到了这个错误:
svn: Checksum mismatch for '/Users/redacted/Documents/Flex Builder 3/path/to/my/file.mxml'; expected: 'f8cb275de72776657406154dd3c10348', actual: 'null'
我解决了以下问题:
它奏效了,但我不禁想到有更好的方法.什么是导致svn:校验和错误,以及什么是最好的解决方案.
也许更重要的是 - 这是一个更大问题的症状吗?
您是否了解任何创建图表以显示SVN存储库中的分支/合并活动的工具?
我们都在各种教程中看到过这些图表.有些好,有些不太好.它们是否可以自动创建(或者可能有点刺激 - 如果你的分支理念是dev-test-prod,每次发布分支等,你可能需要告诉它们是什么)
我现在正在看TortoiseSVN修订图,但它有比我想要的更多细节和错误的布局.
猎户座,谢谢你的回应.我想,因为分支和合并更像是管理存储库中文件的约定,而不是"SVN的内置功能",所以这将非常困难.我会坚持在我们团队的白板顶部绘制得很糟糕的图表办公室.
我们有几个分布式开发人员在几个项目上合作.我们一直在使用Skype与所有开发人员进行聊天,除了一件事情之外它还可以:
它真的会破坏我们复制并粘贴到聊天中的任何代码 - 尤其是Python中的空格.
这个问题有很多关于聊天客户端和服务器的意见,但是对于粘贴代码没有人说得多.(/sf/ask/2549081/)
是否有人使用聊天或即时客户端来处理源代码真的很好?
我有一种情况,我正在启动一些对象,当它们准备好处理一些输入数据时,调用一个处理程序.
该处理程序从待处理请求的ArrayCollection中获取数据集,将其分配给对象,并从ArrayCollection中删除数据集.
(我不能从ArrayCollection弹出,因为我需要搜索它以找到一个合适的数据集 - 它并不总是顶部的数据集.)
两个对象是否有可能以这样的方式调用我的处理程序:(1)第一个被分配数据集,(2)第二个被分配相同的数据集,然后服务于第一个的处理程序的实例删除了它,我猜(3)尝试从ArrayCollection中删除数据集时处理程序错误的第二个实例.
我对Flash Player运行时不熟悉,知道这种故障情况是否可行,或者我是否应该花些额外的时间来实现某种锁定以防止它出现.
编辑:到目前为止,答案为Flex提供了热烈的评论,但我不确定他们是否回答了这个问题.要清楚,我不是要决定是否使用Flex.
如果我有一个方法:
在第一次调用#1之后但是在#3之前,是否可能另一次调用同一方法#1?
le dorfier,你说Flex/AS"正常" - 你能说明它在这种情况下会"正常工作"吗?
我正在使用 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)
但这显然是低效的,并且会产生丑陋的代码。有没有更好的办法?
svn ×3
actionscript ×1
air ×1
apache-flex ×1
chat ×1
copy-paste ×1
json4s ×1
mysql ×1
play-json ×1
scala ×1
subclipse ×1