powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
9 сообщений из 9, страница 1 из 1
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39931360
javawebsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.
Имею БД (имя схемы mydbschema) на MySQL. В качестве сервера приложений используется Payara Server 5.192, в JDBC которого настроен JDBC Connection Pool и JDBC Resources, для подключения к этой базе. В веб-приложение (проект на java) в web.xml указаны настройки для подключения к моей базе - см.ниже. Когда в коде пишу sql-запрос, то чтобы работало вынужден указывать имя схемы.
Скажите, пожалуйста, что и где нужно указать в настройках, чтобы была возможность писать в коде запросы без указания имени схемы?
Пример:
Код: plsql
1.
select * from mydbschema.mytable1 where field1>10 

ok

Если написать без имени схемы, то не работает
Код: plsql
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 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39931394
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javawebsoft
что и где нужно указать в настройках, чтобы была возможность писать в коде запросы без указания имени схемы?

В MySQL есть такое понятие как текущая база данных. Устанавливается в свойствах сервера (секция [mysql], параметр database, либо соотв. опция командной строки), клиента (там же), подключения (параметр database), либо непосредственно командой USE - в свойствах подключения (параметр init) либо явным выполнением соотв. команды.

PS. С именами параметров мог немного напахать - а проверять тупо лень. В общем, смотри в мануале всё, что связано с current database и default database.

PPS. Явное указание схемы - на самом деле ПРАВИЛЬНО. Даже если работает и без этого.
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39931692
javawebsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina

В MySQL есть такое понятие как текущая база данных. Устанавливается в свойствах сервера (секция [mysql], параметр database, либо соотв. опция командной строки), клиента (там же), подключения (параметр database), либо непосредственно командой USE - в свойствах подключения (параметр init) либо явным выполнением соотв. команды.


Вот и хотелось бы точно узнать что и куда прописать.

Akina

PPS. Явное указание схемы - на самом деле ПРАВИЛЬНО. Даже если работает и без этого.

Согласен! Но пока так нужно.
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39931720
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javawebsoft
хотелось бы точно узнать что и куда прописать

Найдите на сервере файл настроек my.ini .
В нём найдите секцию [client] .
В ней пропишите database=mydbschema .
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39931857
javawebsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
javawebsoft
хотелось бы точно узнать что и куда прописать

Найдите на сервере файл настроек my.ini .
В нём найдите секцию [client] .
В ней пропишите database=mydbschema .

Спасибо, но не помогает.
В C:\ProgramData\MySQL\MySQL Server 5.7 нашел my.ini и в секции [client]
добавил, указанный параметр. Сделал рестарт MySQL, но все равно запросы без имени схемы не работают.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
[client]

# pipe=
# socket=0.0
port=3306
database=mydbschema

[mysql]
no-beep=

default-character-set=utf8


# SERVER SECTION
# ----------------------------------------------------------------------
# 
# The following options will be read by the MySQL Server. Make sure that
# you have installed the server correctly (see above) so it reads this 
# file.=
# 
# server_type=3
[mysqld]

# The next three options are mutually exclusive to SERVER_PORT below.
# skip-networking=

# enable-named-pipe=

# shared-memory=

# shared-memory-base-name=MYSQL

# The Pipe the MySQL Server will use
# socket=MYSQL

# The TCP/IP Port the MySQL Server will listen on
port=3306

# Path to installation directory. All paths are usually resolved relative to this.
# basedir="C:/Program Files/MySQL/MySQL Server 5.7/"

# Path to the database root
datadir=C:/ProgramData/MySQL/MySQL Server 5.7\Data
...
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39932005
javawebsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
javawebsoft
хотелось бы точно узнать что и куда прописать

Найдите на сервере файл настроек my.ini .
В нём найдите секцию [client] .
В ней пропишите database=mydbschema .

Скажите, пожалуйста, а есть ли возможность в самом подключении явно указать имя схемы.
сейчас коннект я получаю так:
Код: 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;
    }
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39932006
javawebsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
javawebsoft
Akina
пропущено...

Найдите на сервере файл настроек my.ini .
В нём найдите секцию [client] .
В ней пропишите database=mydbschema .

Скажите, пожалуйста, а есть ли возможность в самом подключении явно указать имя схемы.
сейчас коннект я получаю так:
Код: 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>


А в сервере приложений Payara (glassfish) создан JDBC Resources с именем jdbc/mydbshema и соответствующие настройки
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39932010
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да вот хрен его знает, что там и как в яве...

Ну попробуй в качестве последнего шанса добавить USE mydbschema перед запросом:

Код: sql
1.
Что_То.Execute_Как_То( "USE mydbschema; select * from mytable1 where field1>10;" ):
...
Рейтинг: 0 / 0
Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
    #39932023
javawebsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Да вот хрен его знает, что там и как в яве...

Ну попробуй в качестве последнего шанса добавить USE mydbschema перед запросом:

Код: sql
1.
Что_То.Execute_Как_То( "USE mydbschema; select * from mytable1 where field1>10;" ):



спасибо! нашел решение - нужно в моем коде дописать conn.SetCatalog("mydbschema")
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Схема по умолчанию в MySQL - выполнение sql-запроса без указания имени схемы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]