[Vapor3][MySQL] エラー「'DatabaseIdentifier<_>' produces result of type 'DatabaseIdentifier<MySQLDatabase>', but context expects 'DatabaseIdentifier<_>'」が表示されたら
[10/21, 2018] |
エラーの原因
DatabaseIdentifierをちゃんと指定しているのに、以下のようなエラーが表示されることがありますよね。
Member 'mysql' in 'DatabaseIdentifier<>' produces result of type 'DatabaseIdentifier
結論からいうと、
- クロージャの中のプログラムが間違っている。
- クロージャの中身がまだ書かれていない
ことが原因です。なのでクロージャの中のリターン正しくを書けばエラーは出なくなります。
エラーが出るパターン
let result = context.container.withNewConnection(to: .mysql){
conn in
}
let result = context.container.withNewConnection(to: .mysql){
conn in
return 1
}
など
エラーが出ないパターン
let result = context.container.withNewConnection(to: .mysql){
conn in
return conn.raw("select * from talbeA;").all()
}
おそらく、クロージャの中身が足りない or 間違っていることでコンパイラが正しくエラーを出せていないのだと思います。(Xcodeのせいなのかな?)正直何が違うのがわからず凄い時間を取ってしまいました。
プログラムって難しいですね。