是否已有一个工具或库可以支持可逆(例如,向上和向下)数据库迁移,并且可以与Spray框架一起使用?(显然斯卡拉)
到目前为止,我们正在使用FlyWay,它运行得相当好,但无法回滚并重新应用失败的迁移(一个Play框架).在早期开发阶段,当事情发生很大变化时,这可能非常方便.
我找到了这个库:https://github.com/nafg/slick-migration-api,它引用了所谓的内容ReversibleMigration,但它似乎并不是我想要的(一种简单的上下定义方式)迁移).
假设有一个简单的脚本.
for file in `hadoop classpath | tr ':' ' ' | sort | uniq`; do echo $file; done
Run Code Online (Sandbox Code Playgroud)
和原始输出hadoop classpath 看起来像这样(文件夹列表在哪里寻找罐子):
zsh %> hadoop classpath
/usr/local/hadoop/etc/hadoop:/usr/local/hadoop/share/hadoop/common/lib/*:/usr/local/hadoop/share/hadoop/common/*:/usr/local/hadoop/share/hadoop/hdfs:/usr/local/hadoop/share/hadoop/hdfs/lib/*:/usr/local/hadoop/share/hadoop/hdfs/*:/usr/local/hadoop/share/hadoop/yarn/lib/*:/usr/local/hadoop/share/hadoop/yarn/*:/usr/local/hadoop/share/hadoop/mapreduce/lib/*:/usr/local/hadoop/share/hadoop/mapreduce/*:/usr/local/hadoop/contrib/capacity-scheduler/*.jar
Run Code Online (Sandbox Code Playgroud)
如果我在Bourne shell中运行上面的脚本,结果将是这样的(它将给出指定类路径中包含的所有jar的唯一列表):
bash-4.1$ for file in `hadoop classpath | tr ':' ' ' | sort | uniq`; do echo $file; done
/usr/local/hadoop/etc/hadoop
/usr/local/hadoop/share/hadoop/common/lib/activation-1.1.jar
/usr/local/hadoop/share/hadoop/common/lib/asm-3.2.jar
/usr/local/hadoop/share/hadoop/common/lib/avro-1.7.4.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-beanutils-1.7.0.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-beanutils-core-1.8.0.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-cli-1.2.jar
/usr/local/hadoop/share/hadoop/common/lib/commons-codec-1.4.jar
...
Run Code Online (Sandbox Code Playgroud)
然而,在zsh中,我仍然得到:
zsh %> for file in `hadoop classpath | tr ':' ' ' | sort | uniq`; do echo $file; done
/usr/local/hadoop/etc/hadoop …Run Code Online (Sandbox Code Playgroud) 上下文:我有一个函数,我想在开始时检查某个 Promise 是否 a) 已经完成并且 b) 具有某个值。
Scala 中有一个方法可以检查 Promise 是否已经完成(从 2.11.5 开始),即isCompleted. 然而,当你想要获得已经完成的 Promise 的值时,看起来你必须像这样写一个令人讨厌的链:
val p = Promise[Boolean]
val result = p.future.value.get.toOption.get
Run Code Online (Sandbox Code Playgroud)
(为了完整性:我正在考虑写一些类似的东西:
if (p.isCompleted && p.future.value.get.toOption.get == true)
Run Code Online (Sandbox Code Playgroud)
但对代码的丑陋感到震惊:))
没有更好的办法吗?或者这是否表明我没有按照预期的方式使用它?
我在 MySQL 5.6.19 中有以下结构。
CREATE TABLE `metadata` (
`md5` char(32) NOT NULL,
`match` enum('none','md5','similarity') DEFAULT NULL
)
Run Code Online (Sandbox Code Playgroud)
我在执行这样的查询时遇到错误:
select * from metadata where match = 'md5';
Run Code Online (Sandbox Code Playgroud)
错误是:
ERROR 1064 (42000):您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行 '= 'md5'' 附近使用的正确语法
表中有多个条目和行可以与查询匹配。但MySQL拒绝这样做。知道原因吗?谢谢!