Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
    Kazuhiro Sera
    @seratch
    あとで en にも書く。
    kenji yoshida
    @xuwei-k
    Scala 2.12.0-RC1 でコンパイルしたら変な死に方してコンパイル通らなかったので、報告しておきました https://issues.scala-lang.org/browse/SI-9918
    Kazuhiro Sera
    @seratch
    おお、ありがとうございます。
    kenji yoshida
    @xuwei-k
    そしてそれによりこういう話が scala/community-builds#279
    Kazuhiro Sera
    @seratch
    お、こっちでなんかやるんでしたっけ。
    kenji yoshida
    @xuwei-k
    いや、むこうで勝手にやってくれるんじゃないですかね?場合によってはなにか聞かれるかもしれないけど
    kenji yoshida
    @xuwei-k
    scalaコンパイラのバグ、直ったっぽい
    xuwei-k/scalikejdbc@8a48c8f
    https://travis-ci.org/xuwei-k/scalikejdbc/builds/160631836
    kenji yoshida
    @xuwei-k
    SQLの予約語の場合に(MySQLだと)バッククォートで囲ってないといけない、とかかな。予約語以外のパターンでも囲っておいて方がいいんだっけ? http://shobon.hatenablog.com/entry/2014/03/16/142256 scalikejdbc/scalikejdbc#571 xuwei-k/scalikejdbc@174991c (← つまりこう?)
    そもそもSQLの予約語にscalikejdbc全体で考慮なんて基本してない気はする? (他のライブラリって対応してるのだろうか)
    ここでの自分の指摘により https://github.com/scalikejdbc/scalikejdbc/pull/427#issuecomment-119067511 必要以上に c.name.replace("`", "") を入れてしまったとか?
    Toshiyuki Takahashi
    @tototoshi
    mysqlの時は何も考えずに全部バッククォート入れるなあ
    kenji yoshida
    @xuwei-k
    MySQLしか考慮してないpull reqがきて、ちゃんと他のDBも対応しろ、と自分が指摘する未来を想像している
    jakelizzI
    @jakelizzI

    play scala 2.5 でpostgresqlとscalikejdbcを利用しようと思っているのですが、2点ほど質問があります。
    1.postgresqlのデータベース名がdefaultの時はうまくいくのですが、変更した場合は

    [IllegalStateException: Connection pool is not yet initialized.(name:'default)]

    が出てしまいます。データベース名を変更した場合はどのようにすればよろしいのでしょうか?

    1. ConnectionPoolにHikariCPを使用する場合は、BoneCPConnectionPoolのようなクラスを自作しなければならないのでしょうか?
    Toshiyuki Takahashi
    @tototoshi
    http://scalikejdbc.org/documentation/connection-pool.html 下の方にhikaricpの例があります
    Kazuhiro Sera
    @seratch
    play だったら scalikejdbc-play-dbapi-adapter を使うようにして http://scalikejdbc.org/documentation/playframework-support.html
    scalikejdbc 関係ない Play の hikaricp 初期化設定して DbApi 経由で使うというのもアリですね。
    jakelizzI
    @jakelizzI

    @tototoshi さん ありがとうございます!

    val dataSource: DataSource = {
      val ds = new HikariDataSource()
      ds.setDataSourceClassName(dataSourceClassName)
      ds.addDataSourceProperty("url", url)
      ds.addDataSourceProperty("user", user)
      ds.addDataSourceProperty("password", password)
      ds
    }
    ConnectionPool.singleton(new DataSourceConnectionPool(dataSource))

    上記の記述は、どこに記述すればいいのでしょうか....

    Toshiyuki Takahashi
    @tototoshi
    あ、playの場合は瀬良さんの方法が良いと思います。
    jakelizzI
    @jakelizzI
    @seratch さん お答えありがとうございます!
    scalikejdbc関係ないPlayのhikaricp初期化設定とは
    https://www.playframework.com/documentation/2.5.x/SettingsJDBC
    の方法でしょうか?
    Manabu Nakamura
    @gakuzzzz

    IllegalStateException: Connection pool is not yet initialized.

    これが発生する場所がわかればもう少し建設的なコメントができるかもですね。

    もし SQLSyntaxSupport を mixin した object の操作で出ている場合は、connectionPoolName を override して自分でつけた ConnectionPool の名前を指定するとよいかと思います。

    Kazuhiro Sera
    @seratch
    @jakelizzI はい、そうです。それを設定して有効になる DbApi からコネクションを取るように上記のアダプターモジュールを使ってください。
    jakelizzI
    @jakelizzI

    @gakuzzzz さん ありがとうございます!
    おっしゃるとおり、SQLSyntaxSupportをmixinしたobjectへの操作で発生しております。ですので、試してみたいのですが、別のExceptionが発生してしまったので後々試してみようと思います!

    @seratch さん ありがとうございます!enabled += "scalikejdbc.PlayDBApiAdapterModule"←の記述でplay側でのconnectionPoolの設定がDbApiに反映されるということでしょうか?また、defaultの設定のまま行っていた時は特にConnectionを意識していなかったので、どのようにDbApiからコネクションを取得するのかお教えいただけますか?

    Kazuhiro Sera
    @seratch
    ドキュメントに書いてあることで設定できるはずです。
    ponkotuy
    @ponkotuy
    hasMany[]().byDefaultとやったらうまく動かないので、明示的にjoinsしたら動くようになったぜ!ってことがあったんですが、これ仕様ですか?
    Kazuhiro Sera
    @seratch
    これ具体的にはどういう問題ですか? >.byDefaultとやったらうまく動かない
    ponkotuy
    @ponkotuy
    最小構成作って見せよう!と思っていじってたら再現しなくて、色々弄ってみたらどうも循環的にjoinしようとしてて駄目だったみたいです…自己解決で申し訳ない
    そりゃだめだ
    kkismd
    @kkismd
    質問です
    scalikejdbc.scalatest.AutoRollback を使うときはfixture()や各テストに渡される implicit session を使ってDBを操作すると思いますが、この場合 localTx を使って自前でロールバックを行うようなロジックのテストは可能なんでしょうか?
    Kazuhiro Sera
    @seratch
    @kkismd テスト対象のコードの内部で DB.localTx 呼んでいるケースでしょうか?もしそうであれば AutoRollback の影響下に置くことはできないですね。DB.localTx の内部だけをメソッドにしてそれをテストしていただくなどが必要ですね。
    kkismd
    @kkismd
    なるほどです そういう切り方をすれば可能ですね
    ありがとうございます
    kken
    @KentaKomai

    はじめまして、いつもこちらのライブラリ使わせていただいているものです。

    質問させてください。

    db {
      default.driver=com.mysql.jdbc.Driver
      default.url="jdbc:mysql://localhost/dev_db"
      default.username=root
      default.password="root"
    
      test.driver=com.mysql.jdbc.Driver
      test.url="jdbc:mysql://localhost/test_db"
      test.username=root
      test.password="root"
    }

    このようなconfigを記述していて、テストのときだけはtest.*のほうのスキーマを利用したいです。

    http://scalikejdbc.org/documentation/testing.html
    http://stackoverflow.com/questions/34123011/scalikejdbc-connection-pool-is-not-yet-initialized-namedefault

    この辺りを参考にさせていただきつつ、

    override def db = NamedDB('test).toDB

    AutoRollbackを継承しているベースクラスで上記のコードを呼び、
    更にDB初期化で

    DBs.setupAll()

    を呼ぶことで、動作はしたんですが、defaultのほうからデータを取得してしまいます。
    しかしFixtureの引数になっているDBSessionを見るとjdbcのURLはtestのほうを見ています。

    println(this.session.connection)
    > jdbc:mysql://localhost/test_db, UserName=root@localhost, MySQL-AB JDBC Driver

    testを見るために、何か見落としている設定等ありますでしょうか。。。

    kken
    @KentaKomai
    すいません、解決しました。
    テストしているクラスで override val schemaName = Some("dev_db") していました。お騒がせしました。
    KAWACHI Takashi
    @tkawachi
    昨日コード見てて良くわからない箇所があったのですが https://github.com/scalikejdbc/scalikejdbc/blob/master/scalikejdbc-core/src/main/scala/scalikejdbc/SQLTemplateParser.scala#L71-L75 で 11回ループしているところどういう意味なんでしょう? replaceAll(" +", " ") でいいのでは…と思ったのですがどうなんでしょう
    Kazuhiro Sera
    @seratch
    なるほど、確かにその方がよさそうです >replaceAll(" +", " ")
    @tkawachi 忘れそうなので、お時間あるときに PR いただけると。
    KAWACHI Takashi
    @tkawachi
    出しておきましたー scalikejdbc/scalikejdbc#699
    Toshiyuki Takahashi
    @tototoshi
    scalikejdbcのQueryDSLで生成されるSQLで、カラム名をクオートしたりってできますか?
    insert into `table` values (`id`, `name`, .....)`
    みたいな
    Toshiyuki Takahashi
    @tototoshi
    sqls"id" みたいなことやれば一応できた。けれど...
    Toshiyuki Takahashi
    @tototoshi
    scalikejdbc/scalikejdbc#571 すでにissueに上がってた
    kenji yoshida
    @xuwei-k
    scalikejdbcでやるとして、MySQLでは簡単に出来ても、DBの実装毎になんか変えないとうまくいかなかったような気もする?(うろ覚え
    Kazuhiro Sera
    @seratch
    default off で、今までと挙動かえないようにして、設定切り替えたら一律 backquote つきになる、みたいな仕様なら導入しやすいなと思っています。私がやるのはちょっとすぐには無理かも。
    Toshiyuki Takahashi
    @tototoshi
    default offにして、の方針でちょっとコードいじったりしてみてました。うまくいったらプルリクします。
    Toshiyuki Takahashi
    @tototoshi
    scalikejdbc/scalikejdbc@25c41b4 もうちょっとスマートにならないかな...
    Toshiyuki Takahashi
    @tototoshi
    (まだがんばってる)scalikejdbcのSQLSyntaxのコードを最初に整理した方良さそうな気がしてきた。
    harry
    @harry0000
    1点お聞きしたいのですが、skinny-ormでEntityを指定してcreateって出来ますか?ソースコード等を確認した限りでは出来なさそうな気がしました。
    Kazuhiro Sera
    @seratch
    skinny-ormでEntityを指定してcreateって出来ますか
    @harry0000 今のところできないですね。insert 時未設定の auto increment な PK 問題などもあり。 NewEntity みたいなのを別で用意して field を macro でどうにかするとかは考えられますが、ライブラリの機能としては今はないです。