I have this Java snippet, running inside a WildFly server backed by MariaDB:
var stmt = conn.prepareStatement("SELECT * FROM vehicles;"); ResultSet rs = stmt.executeQuery();
which gives me the following exception:
org.h2.jdbc.JdbcSQLException: Table "VEHICLES" not found; SQL statement: SELECT * FROM vehicles; [42102-193]
So, apparentally, it decided to uppercase the table name, which I don’t want. How can I turn it off?
That is not possible, SQL dialects are – usually – case insensitive by default, but store the table name in uppercase (some dialects will store in lowercase). This means that if you use
select * from vehicle, you’re actually selecting from a table called
VEHICLE, and error messages will reflect that name, because the table
vehicle is a different entity than the table
If you want to have the original case reflected in the error message, you need to select from a table really called
vehicle. To do that you will need to quote the object name in all your SQL statements, eg
select * from "vehicle", or – in MariaDB and MySQL –
select * from `vehicle`. Quoted object names retain their original case.