掲題で嵌ったので、取り急ぎ記録しておきます。
本番は mysql ですが、DBにアクセスするコードのテストは H2DB(in memory) を使用して書いています。
以下では、本番の mysql には sakanasakana テーブルが存在するとします。
テスト用の H2DB のセットアップは、 URL に INIT=RUNSCRIPT FROM 'schema.sql' として初期化処理を shema.sql に記述します。schema.sql ではテーブルの作成とテストデータの読み込みを行います。
schema.sql
DROP TABLE IF EXISTS sakanasakana;
CREATE TABLE `sakanasakana` (
`sakana` varchar(10) NOT NULL,
`atama` varchar(10) NOT NULL,
`yokunaru` double DEFAULT NULL
);
insert into sakanasakana select * from csvread('resources/sakanasakana .csv');
Query は slick 記法に則ります。そのため、Table を定義します。
Tables.scala(一部です)
class SakanasakanaTable(tag: Tag) extends Table[Sakanasakana] (tag, "sakanasakana") {
def sakana = column[String]("sakana")
こうして sakanasakana テーブルを参照するテストコードを書くと、Table not found になります。上記の (tag, "sakanasakana") を (tag, "SAKANASAKANA") というように大文字に変更するとテーブルを参照できるようになりますが、本番の mysql のテーブル名と異なるので、本番でエラーになってしまいます。
解決策ですが、
H2DB の URL に DATABASE_TO_UPPER=false; を追加したところ、参照できました。