У меня есть два клиента, которые делают отдельные подключения к одной и той же базе данных H2. Я хотел бы, чтобы одно из этих подключений было только для чтения, а другое - для чтения-записи. Для этого я использую следующие строки подключения:Несколько соединений с базой данных H2, разные режимы доступа
только для чтения:
jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=r
чтения-записи:
jdbc:h2:tcp://localhost/~/test;ACCESS_MODE_DATA=rw
Моя проблема заключается в том, что режим доступа, как представляется, свойство базы данных, а не соединение. Поэтому, когда оба клиента используются одновременно, клиент, который сделал первое соединение, переопределит режим доступа последующих подключений. Если клиент чтения и записи подключается, когда уже есть соединение с клиентом только для чтения, в базу данных не могут быть внесены изменения. И наоборот, оба клиента могут вносить изменения, если клиент чтения-записи был первым. Режим доступа только, кажется, изменяется, когда нет существующих соединений.
Есть ли способ решить это? Пользователи с учетными данными, которые позволяют им изменять базу данных, должны иметь возможность сделать это в одном клиенте, но не в другом, поэтому я не могу контролировать это просто, предоставляя разные права различным пользователям.
Я не понимаю, почему вы не можете использовать пользователя только для чтения? –
@ThomasMueller Потому что я хотел бы, чтобы человек мог использовать одни и те же учетные данные пользователя с обоими клиентами, но ограничиваться только при подключении к клиенту только для чтения. – GenericJon
И почему вы хотите это сделать? –