- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试按照源代码和文档进行操作,但在迷失了一个上午之后我放弃了:同时,似乎在 SchemaDumper
中做出的假设不够,同时没有 SchemaLoader
并且通过 sequel
命令源代码看起来它破坏了最新的迁移信息(因为它在结果文件)。
这样做的动机是测试中的失败迁移(Sequel 认为表不存在,但它们在迁移到新版本时会中断,并且检查挂起的迁移检查失败) - 以及以前的运行经验从历史开始到今天的所有迁移通常都不是建立数据库的好方法。
到目前为止我已经知道了:
namespace :schema do
task :dump => :migrations_environment do
schema = without_sequel_logging{ DB.dump_schema_migration }
File.open("db/schema.rb", 'w') {|f| f.write(schema) }
end
task :load => :migrations_environment do
Sequel::Migrator.run(DB, "db/schema.rb")
end
end
通常情况下,load
会失败,因为 Migrator
会进行大量假设,从它会按特定顺序获得一个装满文件的文件夹开始,但这是显然 sequel -m
和 sequel -d
根据当前源代码应该做什么 - 以及 sequel -m
和 sequel -d
组合显然是您在进行模式转储和模式加载时应该使用的组合。
有什么想法吗?
最佳答案
我认为您误解了 Sequel 的模式转储和加载的意义。仅当您有现有数据库并希望从中生成迁移时才应使用模式转储,以查看存在的表/列或加载到空数据库中。加载模式转储程序转储的迁移只能在空数据库上完成。
如果您已经有一个非空的现有测试数据库(即以前的迁移已应用到它),您不应该使用模式转储和加载,您应该只在测试数据库上运行迁移器。通常,最好在迁移开发数据库之前迁移测试数据库,这样您就可以运行测试并查看迁移是否会破坏任何内容。
唯一一次你应该从一开始就运行所有迁移是如果你有一个空数据库。如果您迁移测试数据库的方式类似于迁移开发和生产数据库的方式,那么您通常一次只应用一个迁移。
请注意,模式转储程序只能处理可能的一小部分,并且只能在最简单的情况下正常工作。它不处理转储 View 、函数、触发器、部分/功能索引以及一系列其他内容。对于除了最简单的情况之外的所有情况,请使用数据库的工具来转储和加载架构。
关于ruby - rake 数据库 :schema:dump and rake db:schema:load equivalent in Sequel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48299054/
我正在研究 MySQL 用户定义函数 (UDF),它基本上是 Windows 系统函数的包装器。我的问题是 UDF 对于某些输入按预期工作,但会导致 mysqld 对于其他输入崩溃。 UDF 本身采用
我在 this 中搜索过官方文档查找python中 json.dump() 和 json.dumps() 之间的区别。很明显,它们与文件写入选项有关。 但是它们之间的详细区别是什么?在什么情况下一个比
以前写的很简单,只有几句话,最近发现本文是本博客阅读量最大的一篇文章,觉得这样有种把人骗进来的感觉,于是又细化了一些。如果还有不好的地方,欢迎指出。 首先说明基本功能: dumps是将dict转
有没有办法在运行 'erl' 时禁用“崩溃转储”和“核心转储”文件的生成? PS:我知道 erl 的“+d”选项,但我想完全禁用崩溃/核心转储的生成。 最佳答案 您还可以将 ERL_CRASH_DUM
这是一个错误吗? >>> import json >>> import cPickle >>> json.dumps(cPickle.dumps(u'å')) Traceback (most rece
我已经开始了解用于对象序列化和反序列化的pickle模块了。 我知道pickle.dump是用来将代码存储为字节流(序列化),而pickle.load本质上是相反的,转成流字节返回到 python 对
我有一个这种格式的字符串, d = {'details': {'hawk_branch': {'tandem': ['4210bnd72']}, 'uclif_branch': {'tandem':
下面是我的python代码 r = requests.get("https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults
我正在使用 PigLatin,使用 grunt,每次我“转储”东西时,我的控制台都会被诸如此类、诸如此类的非信息所破坏,有没有办法抑制这一切? grunt> A = LOAD 'testingData
我正在尝试将 mongodump 编辑的一组 .bson 文件 mongorestore 到位于 docker 中的 mongo 数据库,在我只有 SSH 访问权限的 Ubuntu 实例上。 我有一个
我正在尝试使用语音发送文本 watson api,但是当我设置 interim_results = True 时,我收到了值错误。请帮助我:) with open(join(dirname(__fil
鉴于 dump.rdb(或 .json 格式)文件中现有 redis 数据库的快照,我想在我自己的机器上恢复此数据以在其上运行一些测试。 任何有关如何执行此操作的指示都将不胜感激。 我尝试解析 dum
我对 Laravel 4 和 Composer 还是很陌生。当我做 Laravel 4 教程时,我无法理解这两个命令之间的区别; php artisan dump-autoload 和 compose
之间有区别吗 object = {1:"one", 2:"two", 3:"three"} file.write(json.dumps(object)) 和 json.dump(object) .如果
导出/导入整个模式的旧方法: exp user/pwdp@server FILE=export.dmp OWNER=user ROWS=Y imp newuser/pwd@server FULL=
我有一堆需要恢复的 mongo 数据库。我使用 mongodump 获取备份目录,其中包括其中的集合。像这样: |- mydir |-- db1 |--- collection1 |--- colle
尽管我在 root 下运行 dotnet-dump,并且进程在 root 下运行(请参阅下面的服务描述),但似乎我缺乏一些权限。 我还尝试了 home、var 和 tmp 中的其他目录:所有相同的消息
我正在尝试生成 LLVM IR 代码,作为 Kaleidoscope tutorial 的一部分我已成功完成在同一台机器上,使用这些相同的编译器标志。 我的代码在 clang++ 3.4 中编译没有错
我正在使用 eclipse 开发 Web 应用程序,当我尝试从 eclipse 中在服务器上运行我的应用程序时遇到了问题。 # # A fatal error has been detected by
给定一个任意的 picklable Python 数据结构data,是 with open('a', 'bw') as f: f.write(pickle.dumps(data)) 相当于 w
我是一名优秀的程序员,十分优秀!