powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SET is deprecated как с эти бороться?
25 сообщений из 44, страница 1 из 2
SET is deprecated как с эти бороться?
    #39963422
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
8.0.2
Код: plaintext
1.
Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 
'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'.

Features Deprecated in MySQL 8.0
The utf8mb3 character set is deprecated. Please use utf8mb4 instead.

??

как сделать такое?
Код: sql
1.
     SELECT @s:=3;
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963438
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
как сделать такое?
Код: sql
1.
     SELECT @s:=3;


Ну тебе ж очень даже вменяемо пишут:
Код: sql
1.
SELECT 3 INTO @s;
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963511
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
раньше делал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
          ELSE @f
     END AS f,
.............


как счас?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963528
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
раньше делал так
Код: sql
1.
2.
3.
4.
5.
6.
7.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
          ELSE @f
     END AS f,
.............



как счас?

Вероятно, WHEN state =1 THEN (SELECT @f + 1 INTO @f) .

Хотя я бы сделал так:

Код: sql
1.
2.
3.
@f:=@f+(state=1) AS f
-- или, если в рамках грядущего синтаксиса
(SELECT @f+(state=1) INTO @f) AS f 



А вообще - какая в пень разница? По сравнению с различиями синтаксиса у разных СУБД это изменение - мелочь...
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963535
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Вероятно, WHEN state =1 THEN (SELECT @f + 1 INTO @f) .

Misplaced INTO clause, INTO is not allowed inside subqueries, and must be placed at end of UNION clauses.

Akina
А вообще - какая в пень разница? По сравнению с различиями синтаксиса у разных СУБД это изменение - мелочь...
на изменения наплевать - дело привычки

вопрос как сделать чтоб работало как нужно?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963537
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
       WHEN state =2 THEN @f := @f + 4
       WHEN dat=1 THEN @f := @f + 8
          ELSE @f
     END AS f,
.............


такое как?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963579
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну типа (не эквивалент, но для демонстрации подхода)
Код: sql
1.
@f := @f + (state=1) + (state=2)*4 + (dat=1)*8
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963623
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,
это извращение

и проблема в этом
@f := @f ...
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963635
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

это предупреждение, не ошибка.
в 8.0.х еще будет работать
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963680
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
это предупреждение, не ошибка.
в 8.0.х еще будет работать
но надо готовиться
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963700
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем готовиться, можно на 5.7 сидеть еще лет 10
да и на МариюДБ легко перейти
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963705
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
зачем готовиться, можно на 5.7 сидеть еще лет 10
да и на МариюДБ легко перейти
много что можно
но если есть что лучше - почему не пользоваться?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39963726
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут согласен, лучше лучшее, чем непонятное новое, поэтому и не упираюсь в 8-ку
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964201
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
неужели нет замены?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964238
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,

оракл пересаживает MySQL к стандарту. В стандарте SQL нет юзер переменных. Хотят оставить через SET @my_var... т.е. в процедурах и функциях.
заменить SELECT @a:=@a+1, .... from никак. Ввели WITH (СТЕ) и т.д
пользуйся MariaDB. Там все сохранено. Есть и СТЕ и Оконные функции и т.д.
Т.е. старое остается на старом (а на серьезных проектах никто не оставляет MySQL с автоапдейтом).
Какой тебе нужен еще выход? Поясни.
Большинство кто ставит сервера на Linux сидит с MariaDB, что есть в комплекте, не констатирую но предполагаю.
Я же выше намекнул - вариантов мало, в общем случае
- переделать все в стандарте
- остаться на 5.7
- перейти на Марию (не думаю что у тебя что-то скажется в проектах)
- клиент предпоследнее дело
- последнее ... Ты же выше написал - много что можно.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964241
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
 SELECT
.....
     CASE
       WHEN state =1 THEN @f := @f + 1
       WHEN state =2 THEN @f := @f + 4
       WHEN dat=1 THEN @f := @f + 8
          ELSE @f
     END AS f,
.............

смысл @f какой?
ведь порядок вычисления
Код: sql
1.
select @a:=1, @b:=@a+1

не гарантирован
почему не
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SET @f:=15;
SELECT
.....
     CASE
       WHEN state =1 THEN  @f + 1
       WHEN state =2 THEN  @f + 4
       WHEN dat=1 THEN @f + 8
          ELSE @f
     END AS f,

и т.д.
т.е. все где @var:= без SET надо переделывать. напрямую нельзя без пока-предупреждения.
и версия 8.0.20, а не 8.0.2, нумерация не через .01 .02 а счетная 1,2,....20
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964325
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

я может не полностью освоил оконные и CTE....
но есть такая задача
есть поле с типами события: с1,с2,..с7
у каждого события есть его время
задача определить время между событиями с2 и с5
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
case 
when field_c='c2' then @f:= field_time
when field_c='c5' then @f := field_time - @f
else null
end as f,
if(c='c5',@f,null) as t

.....


получается просто

к вопросу о переходе на другую субд или о сохранении старой версии - это отдельная тема вне данного топика.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964354
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
задача определить время между событиями с2 и с5
Две копии таблицы гораздо проще и производительнее решат задачу, чем этот геморрой с переменными и полным сканированием таблицы.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964411
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Две копии таблицы гораздо проще и производительнее решат задачу, чем этот геморрой с переменными и полным сканированием таблицы.
lдве копии не надо сканировать? чтоб получить эти копии? но это только часть задач, которые решаются в этом запросе.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964467
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
две копии не надо сканировать?
Напомнить про существование такой фигни как индексы?
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964472
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторк вопросу о переходе на другую субд или о сохранении старой версии - это отдельная тема вне данного топика. переход на мариюдб - это простая вещь как поменять сигареты Винстон на Мальборо. Табак один, обертка разная. Ничего критичного в разнице MySQL-MariaDB ты не используешь 99%.
Снять дамп переустановить истинную ДБ от Майкла Видениуса это очень просто.
Интересно зачем в Дебиан менять дефолтный стек MariaDB на уже давно Оракловый MySQL.
Есть нюанс - неизвестно насколько долго Мария будет держать фичи старого MySQL. Но по дефолту - это их принцип.
Но еще раз - MariaDB - это лучший вариант. Поэтому и включают в дистрибутивы по дефолту.
Akina уже отвечал я пока не вчитывался дальше.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964483
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
читаю далее, гром гремит, дождь как из ведра...

ты не показывал ранее смысла
давай по порядку,
автор вадяесть поле с типами события: с1,с2,..с7
у каждого события есть его время
задача определить время между событиями с2 и с5

нормализовать...? или Акина уже говорил об этом...
реально летит только то что в FAQ от Javadbc с переменными,
там обалденно мудрые мысли, но теперь товарищи из Оракле предлагают менять носки на гольфы.
Ты пока не переработаешь все, что на "фичах" старого MySql - будешь в глобальном удивлении.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964485
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Напомнить про существование такой фигни как индексы?
напоминать не надо, надо сравнивать цифры.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964487
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov
нормализовать...? или Акина уже говорил об этом...
было бы не плохо, вот только это приходит как данность из стороннего сервиса
Alex_Ustinov
реально летит только то что в FAQ от Javadbc с переменными,
там обалденно мудрые мысли, но теперь товарищи из Оракле предлагают менять носки на гольфы.
Ты пока не переработаешь все, что на "фичах" старого MySql - будешь в глобальном удивлении.
вопрос не в том, а в том как можно реализовать в новых версиях.
пока есть время до выхода 9...
я и хочу начать перерабатывать.
Alex_Ustinov
Интересно зачем в Дебиан менять дефолтный стек MariaDB на уже давно Оракловый MySQL.
привычка.
Alex_Ustinov
Есть нюанс - неизвестно насколько долго Мария будет держать фичи старого MySQL. Но по дефолту - это их принцип.
поставишь на Мария - а она тот же фортель выкинет....
Alex_Ustinov
Но еще раз - MariaDB - это лучший вариант. Поэтому и включают в дистрибутивы по дефолту.
спорное утверждение, но имеет право на существование.
...
Рейтинг: 0 / 0
SET is deprecated как с эти бороться?
    #39964488
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
... чтоб получить эти копии? но это только часть задач, которые решаются в этом запросе.
покажи эти запросы. В MySQL-е часть запроса - это ничто. Показывай весь запрос, или смысл.
еще
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select 
case 
when field_c='c2' then @f:= field_time
when field_c='c5' then @f := field_time - @f
else null
end as f,
if(c='c5',@f,null) as t

.....

далее, почему в записи нельзя использовать одну переменную- порядок не гарантирован
т.е.
Код: sql
1.
2.
SET @a:=2020;
SELECT @a, @a:=@a-1010;

может выдать и (1010, 2020) и (2020,1010)
меньше скрывай смысла больше получишь ответов
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / SET is deprecated как с эти бороться?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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