Задавайте вопросы, мы ответим
Вы не зашли.
Прошу помочь так как считаю, что все пишу корректно.
Проблемное предложение
DELETE tRet FROM `StopGap`.`dvfn_link_get` tRet
JOIN `test`.`dvview_instances` tInst ON tRet.`InstanceID` = tInst.`InstanceID` WHERE tInst.`Deleted` = 1;
Также проверял клаусу `StopGap`.`dvfn_link_get` AS tRet. Она тоже дает ошибку.
Выражение, которое выполняется корректно
DELETE `StopGap`.`dvfn_link_get` FROM `StopGap`.`dvfn_link_get`
JOIN `test`.`dvview_instances` tInst ON `StopGap`.`dvfn_link_get`.`InstanceID` = tInst.`InstanceID`
WHERE tInst.`Deleted` = 1;
Также корректно выполняется
INSERT `StopGap`.`dvfn_link_get` ( `InstanceID` , `Distance` )
SELECT DISTINCT tLinks.`DestinationCardID` , Step FROM `StopGap`.`dvfn_link_get` tCards
JOIN `test`.`dvsys_links` tLinks ON tLinks.`SourceCardID` = tCards.`InstanceID` WHERE tCards.`Distance` = ( Step - 1 ) AND tLinks.`Type` IN ( SELECT `Type` FROM `test`.`Types` ) AND NOT EXISTS ( SELECT `InstanceID` FROM `StopGap`.`dvfn_link_get` WHERE `InstanceID` = tLinks.`DestinationCardID` );
Создание таблицы
DROP TABLE IF EXISTS `StopGap`.`dvfn_link_get`;
CREATE TABLE IF NOT EXISTS `StopGap`.`dvfn_link_get` ( InstanceID CHAR(36) PRIMARY KEY , Distance int );
Неактивен
Note
If you provide an alias for a table, you must use the alias when referring to the table:
Неактивен
Какая именно ошибка возникает? У меня отрабатывает без ошибки, mysql-5.0.22
Неактивен
Ошибка
Unknown table 'tret' in MULTIDELETE
As You see i 'm using an alias
DELETE tRet FROM `StopGap`.`dvfn_link_get` tRet
JOIN `test`.`dvview_instances` tInst ON tRet.`InstanceID` = tInst.`InstanceID`
WHERE tInst.`Deleted` = 1;
Mysql version is
mysql> select version();
+-----------------------+
| version() |
+-----------------------+
| 6.0.4-alpha-community |
+-----------------------+
1 row in set (0.00 sec)
Неактивен
Когда версия нестабильная, можно всего ожидать, тем более если это альфа.
Скорее всего, это бага данной версии.
Попробуйте обновить.
Если не поможет - пишите на bugs.mysql.com.
Кстати. А зачем Вам 6-я? Она стабильная выйдет еще совсем не скоро...
Неактивен
Версию я взял последнюю. А что значит не скоро?
Неактивен
А что значит не скоро?
Порядка года через два, где-то.
Возьмите лучше 5.1 - эта вот-вот официальная стабильная выйдет.
И работает щас уже хорошо, без багов почти.
Неактивен
Через 2 года - это многовато. Спасибо попробую взять 5.1.
Неактивен
Уточняю состояние в котором происходит ошибка и не только в 6.0, но и в 5.1
Если ты работаешь в текущей БД, определенной connect stopgap, то все корректно
DELETE t1 FROM `stopgap`.`dvfn_link_get` t1; -- ok
Если же текущая отличается от указанной в предложении DELETE, скажем test, то ппредложение
DELETE t1 FROM `stopgap`.`dvfn_link_get` t1; -- not ok
выдает ошибку
Это было бы можно понять скажем ограничением доступа к другой схеме, но я работаю под root и предложение
DELETE `stopgap`.`dvfn_link_get` FROM `stopgap`.`dvfn_link_get`; -- ok
опять же проходит.
Похоже, что все-таки бага.
Неактивен
Скорее всего, бага. Сегодня в рассылке была похожая бага с алиасами:
mysql> lock tables a read;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from a as b;
ERROR 1100 (HY000): Table 'b' was not locked with LOCK TABLES
Неактивен
Igor Panshin написал:
Уточняю состояние в котором происходит ошибка и не только в 6.0, но и в 5.1
Если ты работаешь в текущей БД, определенной connect stopgap, то все корректно
DELETE t1 FROM `stopgap`.`dvfn_link_get` t1; -- ok
Если же текущая отличается от указанной в предложении DELETE, скажем test, то ппредложение
DELETE t1 FROM `stopgap`.`dvfn_link_get` t1; -- not ok
выдает ошибку
Это было бы можно понять скажем ограничением доступа к другой схеме, но я работаю под root и предложение
DELETE `stopgap`.`dvfn_link_get` FROM `stopgap`.`dvfn_link_get`; -- ok
опять же проходит.
Похоже, что все-таки бага.
Нет, не бага.
http://dev.mysql.com/doc/refman/5.1/en/delete.html
Cross-database deletes are supported for multiple-table deletes, but in this case, you must refer to the tables without using aliases. For example:
DELETE test1.tmp1, test2.tmp2 FROM test1.tmp1, test2.tmp2 WHERE ...
Неактивен
Ну, можно относиться и не как к баге, раз есть в документации. Так любит делать
Света Смирнова - изменять документацию под известные баги. Но по-человечески - бага
Неактивен
paulus написал:
Ну, можно относиться и не как к баге, раз есть в документации. Так любит делать
Света Смирнова - изменять документацию под известные баги. Но по-человечески - бага
Дык отмазались же
Хотя может напрягать в некоторых случаях. Если нужно по одной ссылочной таблице два разных джойна навесить.
Бага короче и нет им пощады.
Неактивен
Cross-database deletes are supported for multiple-table deletes, but in this case, you must refer to the tables without using aliases. For example:
Раз уж здесь такой принцип.
Читаю. КроссБД удаление поддерживается для ...bla-bla Но у меня-то схема. При чем тут БД? Здесь же не написано Cross-schemas deletes ... bla-bla.
Неактивен
Igor Panshin написал:
Cross-database deletes are supported for multiple-table deletes, but in this case, you must refer to the tables without using aliases. For example:
Раз уж здесь такой принцип.
Читаю. КроссБД удаление поддерживается для ...bla-bla Но у меня-то схема. При чем тут БД? Здесь же не написано Cross-schemas deletes ... bla-bla.
Есть такая проблема - посты невнимательно читать.
Если база отличается от текущей, необходимо прицепить имя базы. Типа для базы test
test.table
Неактивен
schema и database - синонимы
Неактивен
EugeneTM написал:
Igor Panshin написал:
Cross-database deletes are supported for multiple-table deletes, but in this case, you must refer to the tables without using aliases. For example:
Раз уж здесь такой принцип.
Читаю. КроссБД удаление поддерживается для ...bla-bla Но у меня-то схема. При чем тут БД? Здесь же не написано Cross-schemas deletes ... bla-bla.Есть такая проблема - посты невнимательно читать.
Если база отличается от текущей, необходимо прицепить имя базы. Типа для базы test
test.table
Я стараюсь читать внимательно и всегда использую таблицу в виде `database`.`tablename`. Смотри выше. Не было ни одного использования таблиц вне схемы.
Неактивен
EugeneTM написал:
Igor Panshin написал:
Уточняю состояние в котором происходит ошибка и не только в 6.0, но и в 5.1
Если же текущая отличается от указанной в предложении DELETE, скажем test, то ппредложение
DELETE t1 FROM `stopgap`.`dvfn_link_get` t1; -- not ok
выдает ошибку
Это было бы можно понять скажем ограничением доступа к другой схеме, но я работаю под root и предложение
DELETE `stopgap`.`dvfn_link_get` FROM `stopgap`.`dvfn_link_get`; -- ok
опять же проходит.
На тему невнимательно - это я вообще то про себя писал.
В данном случае видимо воспринимает как кросс...
Раз удаление не из текущей базы.
Тут у них вообще достаточно кривенько.
По временным таблицам слегка зацепило.
http://sqlinfo.ru/forum/viewtopic.php?id=645
А что говорить про разные базы.
Неактивен