0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 11
1

Java база MySQL и PayraServer, sql запросы не работают если не указать явно имя схемы

27.02.2020, 01:17. Показов 851. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день.
Имею БД (имя схемы mydbschema) на MySQL. В качестве сервера приложений используется Payara Server 5.192, в JDBC которого настроен JDBC Connection Pool и JDBC Resources, для подключения к этой базе. В веб-приложение (проект на java) в web.xml указаны настройки для подключения к моей базе (см.ниже). Когда в коде пишу sql-запрос, то чтобы он работал вынужден указывать явно имя схемы.

Скажите, пожалуйста, что и где нужно указать в настройках, чтобы была возможность писать в коде sql-запросы без указания имени схемы? Т.е. указать, что такую-то схему (БД) использовать по умолчанию.

Пример:
SQL
1
SELECT * FROM mydbschema.mytable1 WHERE field1>10
ok

Если написать без имени схемы, то не работает
SQL
1
SELECT * FROM mytable1 WHERE field1>10
error


web.xml
XML
1
2
3
4
5
6
7
...
<resource-ref>
      <res-ref-name>jdbc/mydbschema</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
      <res-sharing-scope>Shareable</res-sharing-scope>
</resource-ref>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.02.2020, 01:17
Ответы с готовыми решениями:

Как изменить или явно указать версию SQL Server?
Проблема следующего характера: С помощью EntityFramework создается база данных, в моем случае это...

Из за схемы данный данной не работают запросы
таблицы заполнились схема данных создалась но по какой то причине не создаются запросы ошибка в...

SQL Запросы. MS SQL. 3. Приложения, которые работают со всеми серверами БД
Всем доброго времени суток! Есть задача: Приложения, которые работают со всеми серверами БД. ...

Не работают sql запросы
База данных «БАНК». Даны отношения, моделирующие работу банка и его филиалов. Клиент может...

6
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
27.02.2020, 10:30 2
В общем случае jdbc вряд-ли предусматривает указание схемы. Нужно смотреть на конкретный драйвер (например в документацию по connection string).
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 11
27.02.2020, 13:56  [ТС] 3
Цитата Сообщение от xoraxax Посмотреть сообщение
В общем случае jdbc вряд-ли предусматривает указание схемы. Нужно смотреть на конкретный драйвер (например в документацию по connection string).
драйвер в payara (это сервер приложений продолжение умершего glassfish) используется от mysql т.е. mysql-connector-java-5.1.40-bin.jar
Знаю точно, что как-то можно указать в mysql дефолтную БД - вопрос как?
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
27.02.2020, 14:27 4
документацию к драйверу читал?
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 11
27.02.2020, 16:50  [ТС] 5
Цитата Сообщение от xoraxax Посмотреть сообщение
документацию к драйверу читал?
это стандартный от mysql драйвер! Я так понимаю нужно всего лишь, что-то прописать в файле my.ini сервера MySQL
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
27.02.2020, 17:41 6
ну тебе видней
0
0 / 0 / 0
Регистрация: 03.02.2020
Сообщений: 11
27.02.2020, 22:43  [ТС] 7
Скажите, пожалуйста, а есть ли возможность в самом подключении явно указать имя схемы?

Сейчас коннект я получаю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
public static Connection getConnection() {
        try {
            ic = new InitialContext();
            ds = (DataSource) ic.lookup("java:comp/env/jdbc/mydbschema");
            conn = ds.getConnection();
        } catch (SQLException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        } catch (NamingException ex) {
            Logger.getLogger(Database.class.getName()).log(Level.SEVERE, null, ex);
        }
 
        return conn;
    }

где в web.xml
XML
1
2
3
4
5
6
<resource-ref>
        <res-ref-name>jdbc/mydbshema</res-ref-name>
        <res-type>javax.sql.ConnectionPoolDataSource</res-type>
        <res-auth>Container</res-auth>
        <res-sharing-scope>Shareable</res-sharing-scope>
    </resource-ref>
jdbc/mydbshema - это созданное мною на сервере приложений Payara (glassfish) в разделе JDBC Resources имя ресурса, ссылающиеся на мною созданный pool MySQLPool в разделе "JDBC Connection Pools". MySQLPool - как раз-то содержит настройки по подключению к моей БД mydbschema.
0
27.02.2020, 22:43
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.02.2020, 22:43
Помогаю со студенческими работами здесь

Не работают SQL-запросы к LocalDB
Создал LocalDB, добавил туда таблицу, определение таблицы ниже. CREATE TABLE . ( INT NOT...

Перевел базу на ms sql не работают запросы
Добрый вечер, перевел БД access на базу на ms sql в результате перестали работать запросы. Как...

База Данных SQL запросы: Студенты и группы
Помогите доделать 2 запроса по этому заданию, 1 запрос работает остальные нет: создать базу данных...

Java.sql.SQLException: No suitable driver found for com.mysql.jdbc:mysql://localhost:3306/log
Пол дня просидел, и так, и сяк пробовал, никак. Eclipse EE public static void main(String args) {...

Как указать classpath если указано имя пакета в исходном файле?
Скомпилировал файл в IDE IntelliJ IDEA. Потом захотел запустить из командной строки, получил ошибку...

Как указать путь к папке, если ее имя может состоять из произвольной последовательности символов
Как правильней написать путь к папке, а то из этой папки ничего не копируется. Путь: string...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru