|
Помогите с ошибкой 1449
|
|||
---|---|---|---|
#18+
У меня есть БД с разными параметрами. Основные из них это показатели с датчиков каждые час, 2 часа, 8 часов. Сама бд работает в нормальном состоянии и я каждый час, два или 8 часов заношу данные позже их могу просмотреть запросом. Так же есть еще одна БД. В ней имеется внешняя процедура. Когда я ее вызываю и указываю параметры в диапазоне: CALL Crystal2MAS_N('2018.12.09',30,'1408,1508,1477,146,1478,1189,2,3,1428') То получаю ошибку: The user specified as a definer (''@'') does not exist Перед этим я сделал бекап всех бд через MySQL Administrator. Не могу теперь понять что произошло? Код процедуры: CREATE DEFINER=``@`` PROCEDURE `Crystal2MAS_N`(StartDT DATE, depth INT, params VARCHAR(512)) BEGIN DECLARE i TINYINT DEFAULT 1; DECLARE CampTName TINYTEXT; DECLARE done INTEGER DEFAULT 0; DECLARE CampCursor CURSOR FOR SELECT CONCAT ('VAL_',`YEAR`) AS t_name FROM `crystal_olkh`.`campaign` WHERE ((Date3 >= SUBDATE(StartDT, INTERVAL depth DAY) OR Date3 IS NULL) AND Date2 <= StartDT) AND CT=0 ORDER BY `YEAR`; DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done=1; OPEN CampCursor; FETCH CampCursor INTO CampTName; SET @qText := CONCAT ('CREATE TEMPORARY TABLE AllData SELECT PID,CID,H,val FROM `crystal_olkh`.`',CampTName, '` WHERE PID IN (', params, ')'); WHILE done = 0 DO FETCH CampCursor INTO CampTName; IF done = 0 THEN SET @qText := CONCAT (@qText,' UNION SELECT PID,CID,H,val FROM `crystal_olkh`.`', CampTName, '` WHERE PID IN (', params, ')'); END IF; END WHILE; SET @qText := CONCAT (@qText, ';'); CLOSE CampCursor; DROP TABLE IF EXISTS AllData; PREPARE stmt FROM @qText; EXECUTE stmt; DEALLOCATE PREPARE stmt; SET i := 1; SET @qtext := 'SELECT ADDDATE(DT, INTERVAL H+8*60+59 MINUTE) AS tstamp, SUM(IF(PID='; WHILE SPLIT_STRING(params,',',i) != '' DO SET @qtext := CONCAT (@qtext, SPLIT_STRING(params,',',i), ',VAL,NULL)) AS val_',SPLIT_STRING(params,',',i)); SET i := i + 1; IF SPLIT_STRING(params,',',i) != '' THEN SET @qtext := CONCAT (@qtext,', SUM(IF( PID='); END IF; END WHILE; SET @qtext := CONCAT (@qtext,' FROM AllData LEFT JOIN `crystal_olkh`.`calendar` ON IdCal = CID WHERE DT>=SUBDATE(''',StartDT,''', INTERVAL ',depth,' DAY) AND DT<=''',StartDT,''' GROUP BY CID,H;'); PREPARE stmt FROM @qText; EXECUTE stmt; DEALLOCATE PREPARE stmt; DROP TABLE AllData; END ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2019, 13:44 |
|
Помогите с ошибкой 1449
|
|||
---|---|---|---|
#18+
Yarik1986DEFINER=``@``это как? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2019, 13:51 |
|
Помогите с ошибкой 1449
|
|||
---|---|---|---|
#18+
Я так подозреваю CREATE DEFINER= ``@`` PROCEDURE `Crystal2MAS_N`(StartDT DATE, depth INT, params VARCHAR(512)) Должно быть CREATE DEFINER= ``имя_пользователя_бд@ip_адрес_расположения _бд`` PROCEDURE `Crystal2MAS_N`(StartDT DATE, depth INT, params VARCHAR(512)) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2019, 13:58 |
|
Помогите с ошибкой 1449
|
|||
---|---|---|---|
#18+
Yarik1986, Почти. Только адрес расположения клиента. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2019, 14:39 |
|
Помогите с ошибкой 1449
|
|||
---|---|---|---|
#18+
Если Вы не указываете SQL SECURITY, то нет никакого смысла указывать DEFINER. Просто уберите эту характеристику. Совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2019, 14:42 |
|
|
start [/forum/topic.php?fid=47&fpage=39&tid=1829287]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
others: | 21ms |
total: | 146ms |
0 / 0 |