嗯,这很奇怪,任何人都可以帮我指出这个功能可能出错的地方.我有一个类似的功能
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) 我正在加速用于MySQL持久性的测试套件。datadir我已将和更改tmpdir为my.cnf使用 RAMDisk,如下所示。
datadir = /run/shm/mysql
tmpdir = /run/shm/mysqltemp
Run Code Online (Sandbox Code Playgroud)
问题是,每次我运行整个测试套件时,当测试尝试删除某些行作为正在测试的功能的一部分时,有时我会遇到外键约束违规。奇怪的是,当我不在 RAMDisk 上运行 MySQL 或当我保留datadir默认设置/var/lib/mysql/但仅更改tmpdir. 我想使用datadirRAM 运行测试,因为我注意到这样做时清理逻辑非常快。
有人可以帮助指出我在这里可能做错了什么吗?
我有一个想要测试的控制器操作,但出现以下错误。我觉得有一些小东西我可能会丢失,但无法完全弄清楚它是什么。我写了一些小代码来帮助说明问题。
更多上下文,我希望能够向控制器提供模拟依赖项,这就是我手动接管其实例化的原因。
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读取器,该读取器将根据提供的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 ×2
scala ×2
innodb ×1
java ×1
maven-3 ×1
mysql ×1
postgresql ×1
ramdisk ×1
unit-testing ×1