1

これを scalikejdbc ユーザー グループに投稿しました。また、github の問題にもクロス投稿する必要があります。

テーブルに対して生のクエリを実行するドキュメントの例を見てきました。次のコードで IndexEntry のリストを取得しようとしていますが、クエリが実行されてコンソールに結果が返されますが、何も返されません。 map(rs =>... の部分。

関連するコードはこちらです - これを intellij のデバッガーで実行すると、結果は "Vector" size = 0 になります。ご指導ありがとうございます。私は何か間違ったことをしています。うまくいけば、単純な見落としです。

package company.shared.database.models

import company.shared.database.MySQLConnector
import scalikejdbc._

case class IndexEntry(model:String, indexName: String, fieldName: String)

object IndexSchemaModel extends App  with MySQLConnector {
  implicit val session:DBSession = AutoSession

  def indexMap:List[IndexEntry] = {
    val result = DB readOnly { implicit session =>
      sql"""
         SELECT
          substring_index(t.name,'/',-1) as model,
              i.name AS indexName,
              f.name as tableName
       FROM information_schema.innodb_sys_tables t
       JOIN information_schema.innodb_sys_indexes i USING (table_id)
       JOIN information_schema.innodb_sys_fields f USING (index_id)
       where t.name like "MyDB/%"
      """.map(rs => IndexEntry(
              rs.string(0), 
              rs.string(1), 
              rs.string(2))).list().apply()
    }
  println(result) //always List()
  List(IndexEntry("foo", "bar", "az")) //to match the return type
  }

  override def main(args: Array[String]): Unit = {
    configureDB
    indexMap
  }
}

私は scalikejdc の他のバリアントを試しました - withSql { queryDSL } と、完全な構文をサポートする SQL 補間としてのビット全体。最初と最後は常に mysql サーバーに対して実行され、57 行 (小さなデータベース) が返されます。真ん中は NPE をスローします。.map のどこかに問題があり、マップを返すだけにしようとしましたが、常に空のリストになります。

ありがとう、できれば構文エラーが SO にコピーされないことを願っています。

ああ、FWIW、configureDb は接続プールを手動で設定するだけです。これは、DB 名とサーバーが sbt テスト、dev、test、prod の間で大きく異なる可能性があるためです。現在、それは私の問題ではないか、「ConnectionPool('default') が初期化されていません」などと表示されます。

4

2 に答える 2

0

少し恥ずかしさはさておき。問題のユーザーはプロセス権限を持っていなかったため、 で付与プロセスが実行されるとすぐに、これらのテーブルから行が返されませんでしたuser@host に追加されましたが、これはすべて正常に機能しました。information_schema の権限は、問題のユーザーがアクセスできるオブジェクトによって決まります。ROUTINES のような意味の項目、この場合は PROCESS などは、明示的に呼び出す必要があります。

于 2016-02-12T14:41:44.910 に答える
0

ここで回答: https://groups.google.com/forum/#!topic/scalikejdbc-users-group/yRjLjuCzuEo

githubの問題にもクロスポストする必要があります

GitHub の問題に関する質問の投稿は避けてください。https://github.com/scalikejdbc/scalikejdbc/blob/master/CONTRIBUTING.md#issues

于 2016-02-12T10:36:43.950 に答える