MySQL5.6の古いシステムでscalikejdbcGenした際にはまったエラーについてまとめておきます。
エラー内容
スキーマ指定が効かないエラー
scalikejdbc.propertiesにjdbc.schemaを指定しているのに、なぜか別のDBを見に行ってしまう現象に。。。しょうがないので生成したいDBにだけアクセス可能なユーザを別途作成することで回避できますが、次にUnknown tableエラーが発生します。。。
java.sql.SQLSyntaxErrorException: Table 'backup.hogehoge_tbl' doesn't exist
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:536)
at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:513)
Unknown table エラー
[error] (main/compile:scalikejdbcGen) java.sql.SQLSyntaxErrorException: Unknown table 'hogehoge_tbl' in information_schema
[error] Total time: 1 s, completed 2019/04/29 18:36:09
可能な限り権限を強くしてもダメでした。
解決のためにやったこと
mysql-connector-java6.0.6をmariadb-java-client1.4.+にしたらいけました・・・
参考までに以下にその時の設定ファイルを残しておきます。play2.6用の設定抜粋です
plugins.sbt
// 省略
libraryDependencies ++= (
// ("mysql" % "mysql-connector-java" % "6.0.6") ::
("org.mariadb.jdbc" % "mariadb-java-client" % "1.4.+") ::
Nil
)
// 省略
// ScalikeJDBC
addSbtPlugin("org.scalikejdbc" %% "scalikejdbc-mapper-generator" % "3.2.+")
build.sbt
// 省略
// 依存ライブラリ
// DB
"org.scalikejdbc" %% "scalikejdbc" % "3.2.+",
"org.scalikejdbc" %% "scalikejdbc-config" % "3.2.+",
"org.scalikejdbc" %% "scalikejdbc-play-initializer" % "2.6.0-scalikejdbc-3.2",
// "org.mariadb.jdbc" % "mariadb-java-client" % "1.4.+",
"mysql" % "mysql-connector-java" % "6.0.6",
"org.scalikejdbc" %% "scalikejdbc-test" % "3.2.+" % Test,
// 省略
enablePlugins(ScalikejdbcPlugin)
根本原因の解決になってなくて気持ち悪いですが、model自体は生成できたので深追いするのはやめました