powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Непонятки с таблицами INFORMATION_SCHEMA
16 сообщений из 16, страница 1 из 1
Непонятки с таблицами INFORMATION_SCHEMA
    #39081713
springy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть простой зарос:
SELECT column_name, data_type
FROM INFORMATION_SCHEMA.COLUMNS
WHERE table_name = 'big_data'

Отдельно запускается как ожидается.

Засунул запрос в функцию и перебрал курсором. В полях column_name, data_type возвращаются пустые значения. Кол-во строк ожидаемое.
В INFORMATION_SCHEMA.KEY_COLUMN_USAGE примерно та же ерунда. Только тут часть полей возвращают ожидаемые значения, часть пустые.
Что я делаю не так?

Версия 5.6.26-log.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081720
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
springyВ полях column_name, data_type возвращаются пустые значения.Вы уверены в этом?
Чтобы не переспрашивать - покажите минимальный тестовый код, на котором проблема воспроизводится.

В качестве отладочной меры можно попробовать выполнить запрос вида INSERT ... SELECT ... в заранее подготовленную табличку.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081727
springy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Грубо говоря, что-то наподобие:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
    DECLARE done INT DEFAULT 0;
    
    DECLARE cur1 CURSOR FOR
        SELECT COLUMN_NAME, DATA_TYPE
        FROM INFORMATION_SCHEMA.COLUMNS
        WHERE table_name = p_table_name
          AND table_schema = p_schema;

    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

    OPEN cur1;
    my_cur_loop:
    LOOP FETCH cur1 INTO column_name, data_type;
        IF done = 1 THEN
            LEAVE my_cur_loop;
        END IF;
        select result_count + 1 into result_count;
        SELECT CONCAT(msg, COALESCE(column_name, 'empty column name'), ',') INTO msg;
        SELECT CONCAT(msg_values, 'NEW.', COALESCE(column_name, 'empty column name'), ',') INTO msg_values;
    END LOOP my_cur_loop;
CLOSE cur1;


И на выходе что-то вроде:

автор(empty column name,empty column name,empty column name,empty column name,empty column name,)
VALUES(NEW.empty column name,NEW.empty column name,NEW.empty column name,NEW.empty column name,NEW.empty column name,)


Складываю в одну строку и возвращаю из функции.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081732
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть подозрение, что вот это:
http://dev.mysql.com/doc/refman/5.6/en/information-schema.html users who have insufficient privileges see NULL.
От чьего имени выполняется процедура (не ее вызов, а именно она сама)? От root-а пробовали?
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081744
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
springy
Код: sql
1.
select result_count + 1 into result_count;

Это вместо обычного присваивания, что ли?
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081752
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
Код: sql
1.
select result_count + 1 into result_count;


если исключить что у тс нет DECLARE...
данная записть в принципе не противоречит правилам. Должна ли она работать или ?
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081754
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяданная записть в принципе не противоречит правилам. Должна ли она работать или ?По идее, должна. Хотя и выглядит странно.

Моя паранойя подсказывает проверить ее на скорость. Хотя при разовом употреблении (т.е не в большом цикле) принципиальной разницы, думаю, не даст.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081760
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftвадяданная записть в принципе не противоречит правилам. Должна ли она работать или ?По идее, должна. Хотя и выглядит странно.

Моя паранойя подсказывает проверить ее на скорость. Хотя при разовом употреблении (т.е не в большом цикле) принципиальной разницы, думаю, не даст.
я так же думаю.
интересно откуда у тс это возникло, ведь такого в доках нет.
это всё off, просто спортивный интерес...
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081769
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадяведь такого в доках нет.Почему же нет?
Конструкция SELECT ... INTO ... вполне документирована .
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39081799
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,
я имел в виду не саму конструкцию SELECT ... INTO .., а такое её использование вместо set
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39082067
springy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftЕсть подозрение, что вот это:
http://dev.mysql.com/doc/refman/5.6/en/information-schema.html users who have insufficient privileges see NULL.
От чьего имени выполняется процедура (не ее вызов, а именно она сама)? От root-а пробовали?

Пользователь root@localhost и definer функции, и от кого запускается.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39082091
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
springyГрубо говоря, что-то наподобие:
Не надо грубо. Приведите полный текст процедуры. Ещё лучше - удалите из неё лишнее для воспроизведения проблемы, но не потеряйте при этом саму проблему. Совсем хорошо - дать также DDL таблицы и код вызова процедуры и вывода результата её работы.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39082169
springy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблему обнаружил.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    OPEN cur1;
    my_cur_loop:
    LOOP FETCH cur1 INTO column_name, data_type;
        IF done = 1 THEN
            LEAVE my_cur_loop;
        END IF;
        select result_count + 1 into result_count;
        SELECT CONCAT(msg, COALESCE(column_name, 'empty column name'), ',') INTO msg;
        SELECT CONCAT(msg_values, 'NEW.', COALESCE(column_name, 'empty column name'), ',') INTO msg_values;
    END LOOP my_cur_loop;



Если переменную column_name переименовать, всё проходит, как ожидалось. Видно column_name что-то сокральное для MySql или он курсор как-то хитро парсит с учетом переменных, куда идут данные. А поле с таким названием есть в селекте курсора.

Спасибо всем откликнувшимся.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39082205
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
springyВидно column_name что-то сокральное для MySql или он курсор как-то хитро парсит с учетом переменных, куда идут данные. А поле с таким названием есть в селекте курсора.Да нет там ничего сакрального...
http://dev.mysql.com/doc/refman/5.5/en/local-variable-scope.html A local variable should not have the same name as a table column. If an SQL statement, such as a SELECT ... INTO statement, contains a reference to a column and a declared local variable with the same name, MySQL currently interprets the reference as the name of a variable.
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39082221
springy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял. Спасибо. Не ожидал, что поля после INTO тоже может зацепить запросом. В своё оправдание могут только сказать, что только второй день пишу процедуры в MySql.:)
...
Рейтинг: 0 / 0
Непонятки с таблицами INFORMATION_SCHEMA
    #39082223
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
springyНе ожидал, что поля после INTO тоже может зацепить запросом.Точнее, после SELECT. После INTO, как раз, только переменные и могут быть.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Непонятки с таблицами INFORMATION_SCHEMA
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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