小编iva*_*one的帖子

postgres迁移错误; 未终止的美元引用字符串

嗯,这很奇怪,任何人都可以帮我指出这个功能可能出错的地方.我有一个类似的功能

CREATE FUNCTION check_password(uname TEXT, pass TEXT)
RETURNS BOOLEAN AS $$
DECLARE passed BOOLEAN;
BEGIN
        SELECT  (pwd = $2) INTO passed
        FROM    pwds
        WHERE   username = $1;

        RETURN passed;
END;

$$  LANGUAGE plpgsql
Run Code Online (Sandbox Code Playgroud)

当我直接在pgAdmin sql控制台中运行它时,没有错误,但使用db-migration-maven-plugin在迁移脚本中运行它我得到了错误.

Error executing: CREATE FUNCTION check_password(uname TEXT, pass TEXT) 
                 RETURNS BOOLEAN AS $$ DECLARE passed BOOLEAN
org.postgresql.util.PSQLException: ERROR: unterminated dollar-quoted 
                        string at or near "$$ DECLARE passed BOOLEAN"
Position: 74
Run Code Online (Sandbox Code Playgroud)

java postgresql database-migration maven-3

5
推荐指数
1
解决办法
5480
查看次数

在 RAMDisk 上运行 MySQL

我正在加速用于MySQL持久性的测试套件。datadir我已将和更改tmpdirmy.cnf使用 RAMDisk,如下所示。

datadir         = /run/shm/mysql
tmpdir          = /run/shm/mysqltemp
Run Code Online (Sandbox Code Playgroud)

问题是,每次我运行整个测试套件时,当测试尝试删除某些行作为正在测试的功能的一部分时,有时我会遇到外键约束违规。奇怪的是,当我不在 RAMDisk 上运行 MySQL 或当我保留datadir默认设置/var/lib/mysql/但仅更改tmpdir. 我想使用datadirRAM 运行测试,因为我注意到这样做时清理逻辑非常快。

有人可以帮助指出我在这里可能做错了什么吗?

mysql innodb ramdisk

5
推荐指数
1
解决办法
5343
查看次数

对具有 json 解析器的播放控制器操作进行单元测试

我有一个想要测试的控制器操作,但出现以下错误。我觉得有一些小东西我可能会丢失,但无法完全弄清楚它是什么。我写了一些小代码来帮助说明问题。

更多上下文,我希望能够向控制器提供模拟依赖项,这就是我手动接管其实例化的原因。

java.lang.UnsupportedOperationException: NoMaterializer does not provide an ExecutionContext
[info]   at play.api.test.NoMaterializer$.executionContext(Helpers.scala:661)
[info]   at play.api.mvc.PlayBodyParsers.$anonfun$enforceMaxLength$1(BodyParsers.scala:866)
[info]   at akka.stream.impl.Compose.apply(TraversalBuilder.scala:164)
[info]   at akka.stream.impl.PhasedFusingActorMaterializer.materialize(PhasedFusingActorMaterializer.scala:488)
[info]   at akka.stream.impl.PhasedFusingActorMaterializer.materialize(PhasedFusingActorMaterializer.scala:424)
[info]   at akka.stream.impl.PhasedFusingActorMaterializer.materialize(PhasedFusingActorMaterializer.scala:415)
[info]   at akka.stream.scaladsl.RunnableGraph.run(Flow.scala:496)
Run Code Online (Sandbox Code Playgroud)

下面是我写的控制器来帮助说明问题

case class Location(lat: Double, long: Double)

object Location {

  implicit val locationReads: Reads[Location] = (
    (JsPath \ "lat").read[Double](min(-90.0) keepAnd max(90.0)) and
      (JsPath \ "long").read[Double](min(-180.0) keepAnd max(180.0))
    ) (Location.apply _)
}

class HomeController @Inject()(
    cc: ControllerComponents,
    mat: Materializer
)(implicit val ec: ExecutionContext) extends AbstractController(cc) {


  def savePlace: Action[JsValue] = Action(parse.json) …
Run Code Online (Sandbox Code Playgroud)

json unit-testing scala playframework

5
推荐指数
1
解决办法
1408
查看次数

条件JSON在Scala中读取

我有两个从同一个父代继承的类。我想在父级中拥有一个通用的JSON读取器,该读取器将根据提供的JSON返回合适的子级。在下面的示例代码片段中更容易解释这一点;

import play.api.libs.json.{JsPath, JsonValidationError, Reads}

sealed abstract class Animal(sound: String)

case class Goat(hooves: String) extends Animal("meh")

case class Cat(needsMilk: Boolean) extends Animal("meow")

val json ="""{"type": "goat", "hooves": "All good for climbing trees"}"""

object Animal {
  val isSupportedAnimal: Reads[String] =
    Reads.StringReads.filter(JsonValidationError("Unsupported animal"))(str => {
      List("goat", "cat").contains(str)
    })

  val animalReads: Reads[Animal] = ((JsPath \ "type").read[String](isSupportedAnimal) and
    //if animal is cat, use the cat specific reads and return a cat object
    //if animal is goat, use goat specific reads and return a goat …
Run Code Online (Sandbox Code Playgroud)

json scala playframework

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