Size: a a a

2020 December 02

AD

Alex Demidov in MySQL
Что может навертеть сильно умный DBA чтобы у него постоянно разносило InnoDB в случае падения mysqld? Какие есть варианты кроме отключения double buffer?
источник

A

Andreii Stolpakov in MySQL
Denis Efremov
А что в них. Показать можешь?
источник

IZ

Ilia Zviagin in MySQL
Andreii Stolpakov
Народ вот такой запрос: INSERT INTO firstdata.station(pt)
SELECT CONCAT( Point_X, " ", Point_Y) AS Coordinate
FROM firstdata.station; Входные данные decimal(6,6) разделитель точка. вставляю в geometry   Error Code: 1416. Cannot get geometry object from data you send to the GEOMETRY field Вот такая ошибка не могу понять почему. Подскажите пожалуйста
этого мало , надо преобразовывать тип
источник

A

Andreii Stolpakov in MySQL
Ilia Zviagin
этого мало , надо преобразовывать тип
Каким образом? Може так: INSERT INTO firstdata.station(pt)
SELECT CONCAT( ST_GeomFromText ('POINT(Point_X, " ", Point_Y)')) AS Coordinate
FROM firstdata.station; ? Нет или как ещё?
источник

IP

Ilya Posunko in MySQL
Andreii Stolpakov
Каким образом? Може так: INSERT INTO firstdata.station(pt)
SELECT CONCAT( ST_GeomFromText ('POINT(Point_X, " ", Point_Y)')) AS Coordinate
FROM firstdata.station; ? Нет или как ещё?
CAST наверно
источник

IZ

Ilia Zviagin in MySQL
Ilya Posunko
CAST наверно
+
источник

IZ

Ilia Zviagin in MySQL
Andreii Stolpakov
Каким образом? Може так: INSERT INTO firstdata.station(pt)
SELECT CONCAT( ST_GeomFromText ('POINT(Point_X, " ", Point_Y)')) AS Coordinate
FROM firstdata.station; ? Нет или как ещё?
Либо вызовом какой-то функции, конструирующей значение GEOMETRY
источник

A

Andreii Stolpakov in MySQL
Ilia Zviagin
Либо вызовом какой-то функции, конструирующей значение GEOMETRY
Какие именно?
источник

DS

David Shiko in MySQL
Всем привет. Подскажите что не так)
CREATE TABLE regions (id INT AUTO_INCREMENT UNIQUE, user_id INT NOT NULL, last_check DATE DEFAULT (CURRENT_DATE), FOREIGN KEY (user_id) REFERENCES users(id));
источник

S

Syntax Highlight Bot in MySQL
David Shiko
Всем привет. Подскажите что не так)
CREATE TABLE regions (id INT AUTO_INCREMENT UNIQUE, user_id INT NOT NULL, last_check DATE DEFAULT (CURRENT_DATE), FOREIGN KEY (user_id) REFERENCES users(id));
источник

S

Syntax Highlight Bot in MySQL
источник

S

Syntax Highlight Bot in MySQL
источник

S

Syntax Highlight Bot in MySQL
====================================================
источник

AD

Alex Demidov in MySQL
David Shiko
Всем привет. Подскажите что не так)
CREATE TABLE regions (id INT AUTO_INCREMENT UNIQUE, user_id INT NOT NULL, last_check DATE DEFAULT (CURRENT_DATE), FOREIGN KEY (user_id) REFERENCES users(id));
источник

DS

David Shiko in MySQL
Я думал, ответ устарел) 2020 на дворе как никак + абсурд что CURRENT_TIMESTAMP есть, а CURRENT_DATE нет
источник

ВР

Вячеслав Ракицкий... in MySQL
Добрый вечер. Есть ли люди кто балуется хранимыми процедурами и в них пользовательскими переменными. Я знаю что можно использовать переменные через declare для хранимок и будет счастье, но сейчас не об этом. В версии 8.0.22 столкнулся с проблемой. Вызываю процедуру, первый раз данное записывается в переменную, вызываю процедуру повторно и данное уже в эту переменную не записывается. Может кто встречал такое поведение?
Вот проблемная строка кода:
set @pr = (select flag from pr where pr.prCode = 'r');

вот сама процедура:
DELIMITER //
create definer = 'sofit'@'%' procedure rpc_dasTreeListChilds(a JSON)
BEGIN

   set @iduser =  json_unquote(json_extract(a, '$.iduser'));
   set @idugr = json_unquote(json_extract(a, '$.idugr'));
   set @idgrmp = toSqlNull(json_unquote(json_extract(a, '$.idgrmp')));



if @idgrmp is not null then
   call bl_accessGrmp(@idgrmp, @idugr, @iduser, 'r');

   set @parentIdmp = null;
   set @idgr = null;
   set @parentMpName = null;
   set @parentMpCode = null;
   set @childs = null;

   select
       idmp, idgr, mpNameOriginal, mpCode
       into @parentIdmp, @idgr, @parentMpName, @parentMpCode
   from v_grmp
   where idgrmp = @idgrmp;
   
   select
       JSON_ARRAYAGG(JSON_OBJECT(
           'idnode', cast(idgrmp as CHAR),
           'name', mpNameOriginal,
           'code', mpCode,
           'state', "unknown",
           'hasChilds', ifnull((select exists(select 1 from grmp where idgr = @idgr and idmpp = v_grmp.idmp)), 0)
       ))
       into @childs
   from v_grmp
   where idgr = @idgr
         and idmpp = @parentIdmp;

   set @parent = JSON_SET('{}',
                           '$.idnode', cast(@idgrmp as CHAR),
                           '$.name', @parentMpName,
                           '$.code',  @parentMpCode,
                           '$.state', 'unknown',
                           '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select JSON_OBJECT('parent', cast(@parent as JSON), 'childs', ifnull(cast(@childs as JSON), cast('[]' as JSON))) `json`;

elseif @idgrmp is null then
   set @idgr = json_unquote(json_extract(a, '$.idgr'));
   set @idgrmp = (select idgrmp from grmp where idgr = @idgr and idmpp is null);

   set @pr = (select flag from pr where pr.prCode = 'r');
   select @pr;
   set @prGroup = (
               select
                   a.flag
               from ugrgr
                   inner join pr a on(ugrgr.prCode = a.prCode)
                   inner join `user`  on(ugrgr.idugr = user.idugr)
               where ugrgr.idugr = @idugr
                   and user.iduser = @iduser
                   and ugrgr.idgr = @idgr
               limit 1
               );
               
   set @hasAccess = (@pr = (select @prGroup & @pr));

   if @hasAccess is null  or @hasAccess = 0  then
       SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'access denied';
   end if;


   set @parentIdmp = null;
   set @parentMpName = null;
   set @parentMpCode = null;
   set @childs = null;

   select
       idmp, mpNameOriginal, mpCode
       into @parentIdmp, @parentMpName, @parentMpCode
   from v_grmp
   where idgrmp = @idgrmp;

   set @parent = JSON_SET('{}',
                       '$.idnode', cast(@idgrmp as CHAR),
                       '$.name', @parentMpName,
                       '$.code',  @parentMpCode,
                       '$.state', 'unknown',
                       '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select
       JSON_ARRAYAGG(JSON_OBJECT(
           'idnode', cast(idgrmp as CHAR),
           'name', mpNameOriginal,
           'code', mpCode,
           'state', "unknown",
           'hasChilds', ifnull((select exists(select 1 from grmp where idgr = @idgr and idmpp = v_grmp.idmp)), 0)
       ))
       into @childs
   from v_grmp
   where idgr = @idgr
         and idmpp = @parentIdmp;
источник

ВР

Вячеслав Ракицкий... in MySQL


   set @parent = JSON_SET('{}',
                   '$.idnode', cast(@idgrmp as CHAR),
                   '$.name', @parentMpName,
                   '$.code',  @parentMpCode,
                   '$.state', 'unknown',
                   '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select JSON_OBJECT('parent', cast(@parent as JSON), 'childs', ifnull(cast(@childs as JSON), cast('[]' as JSON))) `json`;
end if;

END //

Как это сделать лучше я знаю, меня интересует само поведение записи в переменную.
источник

S

Syntax Highlight Bot in MySQL
Вячеслав Ракицкий


   set @parent = JSON_SET('{}',
                   '$.idnode', cast(@idgrmp as CHAR),
                   '$.name', @parentMpName,
                   '$.code',  @parentMpCode,
                   '$.state', 'unknown',
                   '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select JSON_OBJECT('parent', cast(@parent as JSON), 'childs', ifnull(cast(@childs as JSON), cast('[]' as JSON))) `json`;
end if;

END //

Как это сделать лучше я знаю, меня интересует само поведение записи в переменную.
источник

S

Syntax Highlight Bot in MySQL
Вячеслав Ракицкий
Добрый вечер. Есть ли люди кто балуется хранимыми процедурами и в них пользовательскими переменными. Я знаю что можно использовать переменные через declare для хранимок и будет счастье, но сейчас не об этом. В версии 8.0.22 столкнулся с проблемой. Вызываю процедуру, первый раз данное записывается в переменную, вызываю процедуру повторно и данное уже в эту переменную не записывается. Может кто встречал такое поведение?
Вот проблемная строка кода:
set @pr = (select flag from pr where pr.prCode = 'r');

вот сама процедура:
DELIMITER //
create definer = 'sofit'@'%' procedure rpc_dasTreeListChilds(a JSON)
BEGIN

   set @iduser =  json_unquote(json_extract(a, '$.iduser'));
   set @idugr = json_unquote(json_extract(a, '$.idugr'));
   set @idgrmp = toSqlNull(json_unquote(json_extract(a, '$.idgrmp')));



if @idgrmp is not null then
   call bl_accessGrmp(@idgrmp, @idugr, @iduser, 'r');

   set @parentIdmp = null;
   set @idgr = null;
   set @parentMpName = null;
   set @parentMpCode = null;
   set @childs = null;

   select
       idmp, idgr, mpNameOriginal, mpCode
       into @parentIdmp, @idgr, @parentMpName, @parentMpCode
   from v_grmp
   where idgrmp = @idgrmp;
   
   select
       JSON_ARRAYAGG(JSON_OBJECT(
           'idnode', cast(idgrmp as CHAR),
           'name', mpNameOriginal,
           'code', mpCode,
           'state', "unknown",
           'hasChilds', ifnull((select exists(select 1 from grmp where idgr = @idgr and idmpp = v_grmp.idmp)), 0)
       ))
       into @childs
   from v_grmp
   where idgr = @idgr
         and idmpp = @parentIdmp;

   set @parent = JSON_SET('{}',
                           '$.idnode', cast(@idgrmp as CHAR),
                           '$.name', @parentMpName,
                           '$.code',  @parentMpCode,
                           '$.state', 'unknown',
                           '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select JSON_OBJECT('parent', cast(@parent as JSON), 'childs', ifnull(cast(@childs as JSON), cast('[]' as JSON))) `json`;

elseif @idgrmp is null then
   set @idgr = json_unquote(json_extract(a, '$.idgr'));
   set @idgrmp = (select idgrmp from grmp where idgr = @idgr and idmpp is null);

   set @pr = (select flag from pr where pr.prCode = 'r');
   select @pr;
   set @prGroup = (
               select
                   a.flag
               from ugrgr
                   inner join pr a on(ugrgr.prCode = a.prCode)
                   inner join `user`  on(ugrgr.idugr = user.idugr)
               where ugrgr.idugr = @idugr
                   and user.iduser = @iduser
                   and ugrgr.idgr = @idgr
               limit 1
               );
               
   set @hasAccess = (@pr = (select @prGroup & @pr));

   if @hasAccess is null  or @hasAccess = 0  then
       SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'access denied';
   end if;


   set @parentIdmp = null;
   set @parentMpName = null;
   set @parentMpCode = null;
   set @childs = null;

   select
       idmp, mpNameOriginal, mpCode
       into @parentIdmp, @parentMpName, @parentMpCode
   from v_grmp
   where idgrmp = @idgrmp;

   set @parent = JSON_SET('{}',
                       '$.idnode', cast(@idgrmp as CHAR),
                       '$.name', @parentMpName,
                       '$.code',  @parentMpCode,
                       '$.state', 'unknown',
                       '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select
       JSON_ARRAYAGG(JSON_OBJECT(
           'idnode', cast(idgrmp as CHAR),
           'name', mpNameOriginal,
           'code', mpCode,
           'state', "unknown",
           'hasChilds', ifnull((select exists(select 1 from grmp where idgr = @idgr and idmpp = v_grmp.idmp)), 0)
       ))
       into @childs
   from v_grmp
   where idgr = @idgr
         and idmpp = @parentIdmp;
источник

S

Syntax Highlight Bot in MySQL
Вячеслав Ракицкий
Добрый вечер. Есть ли люди кто балуется хранимыми процедурами и в них пользовательскими переменными. Я знаю что можно использовать переменные через declare для хранимок и будет счастье, но сейчас не об этом. В версии 8.0.22 столкнулся с проблемой. Вызываю процедуру, первый раз данное записывается в переменную, вызываю процедуру повторно и данное уже в эту переменную не записывается. Может кто встречал такое поведение?
Вот проблемная строка кода:
set @pr = (select flag from pr where pr.prCode = 'r');

вот сама процедура:
DELIMITER //
create definer = 'sofit'@'%' procedure rpc_dasTreeListChilds(a JSON)
BEGIN

   set @iduser =  json_unquote(json_extract(a, '$.iduser'));
   set @idugr = json_unquote(json_extract(a, '$.idugr'));
   set @idgrmp = toSqlNull(json_unquote(json_extract(a, '$.idgrmp')));



if @idgrmp is not null then
   call bl_accessGrmp(@idgrmp, @idugr, @iduser, 'r');

   set @parentIdmp = null;
   set @idgr = null;
   set @parentMpName = null;
   set @parentMpCode = null;
   set @childs = null;

   select
       idmp, idgr, mpNameOriginal, mpCode
       into @parentIdmp, @idgr, @parentMpName, @parentMpCode
   from v_grmp
   where idgrmp = @idgrmp;
   
   select
       JSON_ARRAYAGG(JSON_OBJECT(
           'idnode', cast(idgrmp as CHAR),
           'name', mpNameOriginal,
           'code', mpCode,
           'state', "unknown",
           'hasChilds', ifnull((select exists(select 1 from grmp where idgr = @idgr and idmpp = v_grmp.idmp)), 0)
       ))
       into @childs
   from v_grmp
   where idgr = @idgr
         and idmpp = @parentIdmp;

   set @parent = JSON_SET('{}',
                           '$.idnode', cast(@idgrmp as CHAR),
                           '$.name', @parentMpName,
                           '$.code',  @parentMpCode,
                           '$.state', 'unknown',
                           '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select JSON_OBJECT('parent', cast(@parent as JSON), 'childs', ifnull(cast(@childs as JSON), cast('[]' as JSON))) `json`;

elseif @idgrmp is null then
   set @idgr = json_unquote(json_extract(a, '$.idgr'));
   set @idgrmp = (select idgrmp from grmp where idgr = @idgr and idmpp is null);

   set @pr = (select flag from pr where pr.prCode = 'r');
   select @pr;
   set @prGroup = (
               select
                   a.flag
               from ugrgr
                   inner join pr a on(ugrgr.prCode = a.prCode)
                   inner join `user`  on(ugrgr.idugr = user.idugr)
               where ugrgr.idugr = @idugr
                   and user.iduser = @iduser
                   and ugrgr.idgr = @idgr
               limit 1
               );
               
   set @hasAccess = (@pr = (select @prGroup & @pr));

   if @hasAccess is null  or @hasAccess = 0  then
       SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'access denied';
   end if;


   set @parentIdmp = null;
   set @parentMpName = null;
   set @parentMpCode = null;
   set @childs = null;

   select
       idmp, mpNameOriginal, mpCode
       into @parentIdmp, @parentMpName, @parentMpCode
   from v_grmp
   where idgrmp = @idgrmp;

   set @parent = JSON_SET('{}',
                       '$.idnode', cast(@idgrmp as CHAR),
                       '$.name', @parentMpName,
                       '$.code',  @parentMpCode,
                       '$.state', 'unknown',
                       '$.hasChilds', if(JSON_LENGTH(@childs) > 0, 1, 0));

   select
       JSON_ARRAYAGG(JSON_OBJECT(
           'idnode', cast(idgrmp as CHAR),
           'name', mpNameOriginal,
           'code', mpCode,
           'state', "unknown",
           'hasChilds', ifnull((select exists(select 1 from grmp where idgr = @idgr and idmpp = v_grmp.idmp)), 0)
       ))
       into @childs
   from v_grmp
   where idgr = @idgr
         and idmpp = @parentIdmp;
источник