Closed sveri closed 9 years ago
I suspect the issue is that h2 converts identifier name to uppercase by default.
The SO post example can be made to work by either
1) Quote identifiers in the migration file:
create table "users" ("id" INT, "first" varchar(32), "last" varchar(32));
OR
2) Use uppercase table name in select, e.g.
(korma.core/select :USERS))
You didn't post the contents of your migration file or yesql query file so I don't know how yesql solves this for you.
I tested both your solutions, they both work for me, so your suspicion was correct.
The question remains, is this a bug in korma or not?
So just to reiterate my knowledge about this:
This means that if you use quoted identifiers everywhere, you shouldn't have problems with Korma and h2.
You could also configure Korma to use unquoted identifiers:
(defdb korma-db (h2 {:db "my.db" :delimiters ""}))
and we could even make this default in Korma but it wouldn't fix anything since it wouldn't necessarily work if tables were created using quoted identifiers.
Maybe it would be enough to document this somewhere, one of the problems I faced was that I did not find any useful information regarding my problem, besides the SO post, which did not have an answer yet.
Hopefully the next person struggling with the problem will find this issue. Each RDBMS has its own peculiarities and it is impossible for Korma to document all of those.
Hi,
I experienced the same problem as this user describes in his SO post: http://stackoverflow.com/questions/26542672/in-clojure-how-do-i-configure-korma-and-ragtime-to-use-the-same-database?noredirect=1#comment44700472_26542672
Repro steps:
:ragtime {:migrations ragtime.sql.files/migrations :database "jdbc:h2:~/closp2"}
(def db-spec {:connection-uri "jdbc:h2:~/closp2"})
I used an sql client to make sure the requested table does exist in the database. I also added these dependencies:
[org.clojure/java.jdbc "0.3.6"] [yesql "0.4.0"] [korma "0.4.0"] [com.h2database/h2 "1.4.182"] [ragtime/ragtime.sql.files "0.3.8"]
Retrieving data from the same table with the same setup with yesql works as expected.