Следующий запрос mysql
select * from PrivateData.Table1 AS m
LEFT JOIN
PrivateData.Table2 AS i
ON m.GUID = i.OutId;
Отлично работает, пока этот запрос:
delete m,i from PrivateData.Table1 AS m
LEFT JOIN
PrivateData.Table2 AS i
ON m.GUID = i.OutId;
Выдает ошибку:
ОШИБКА 1046 (3D000): база данных не выбрана
Почему так? Как иначе я могу удалить выбранные строки из таблиц?
P.S .: Я не разбираюсь в запросах mysql
.
3 ответа
Я не уверен, имеет ли это отношение к вопросу, но стоит попробовать. Из документации:
Для ссылок на псевдонимы в списке таблиц, из которых удаляются строки при удалении нескольких таблиц, используется база данных по умолчанию, если она не указана явно. Например, если база данных по умолчанию - db1, следующий оператор не работает, потому что неквалифицированная ссылка на псевдоним a2 интерпретируется как имеющая базу данных db1:
DELETE a1, a2 FROM db1.t1 AS a1 INNER JOIN db2.t2 AS a2
WHERE a1.id=a2.id;
Чтобы правильно сопоставить псевдоним, который ссылается на таблицу вне базы данных по умолчанию, вы должны явно указать ссылку с именем соответствующей базы данных:
DELETE a1, db2.a2 FROM db1.t1 AS a1
INNER JOIN db2.t2 AS a2
WHERE a1.id=a2.id;
Попробуйте явно указать вашу базу данных:
delete PrivateData.m, PrivateData.i from PrivateData.Table1 AS m
LEFT JOIN
PrivateData.Table2 AS i
ON m.GUID = i.OutId;
Небольшие модификации будут работать
delete from m,i using PrivateData.Table1 AS m LEFT JOIN PrivateData.Table2 AS i ON m.GUID = i.OutId;
ERROR 1046 (3D000): No database selected
ОШИБКА MySQL 1046 (3D000): база данных не выбрана:
простой:
Вам необходимо указать MySQL, какую базу данных использовать:
USE database_name;
перед созданием таблицы.
Если база данных не существует, вам необходимо создать ее как:
CREATE DATABASE database_name;
, за которым следует:
USE database_name;
Еще одно: с кратким примером
Когда я пытался просмотреть таблицы в данной базе данных, я обнаружил указанную выше ошибку. Когда вы подключаетесь к серверу MySQL, он не выбирает для вас базу данных, если вы явно не укажете ее.
Если вы только используете,
mysql --userusername --passwordpassword
or
mysql -uusername -ppassword
клиент MySQL просто подключается к серверу базы данных. После этого вам нужно будет указать имя базы данных, которую вы собираетесь использовать:
use database_name
Если вам не нравится описанный выше метод, вы можете напрямую указать базу данных только при запуске.
Синтаксис для этого же:
mysql -uusername -ppassword database_name
For ex., mysql –ugaurav –pchhabra testdb
Похожие вопросы
Новые вопросы
mysql
MySQL — это бесплатная система управления реляционными базами данных (RDBMS) с открытым исходным кодом, которая использует язык структурированных запросов (SQL). НЕ ИСПОЛЬЗУЙТЕ этот тег для других БД, таких как SQL Server, SQLite и т. д. Это разные БД, которые используют свои собственные диалекты SQL для управления данными. В вопросе всегда указывайте точную версию сервера. Версии 5.x сильно отличаются по своим возможностям от версий 8+.
delete
неверен, он должен быть:delete from ...
.use DATABASENAME
.use DATABASENAME
, который возвращает список записей без ошибок.PrivateData
. Явный вызовuse database
не требуется. Ошибка где-то в другом месте.Unknown column
ошибка? Если это так,Table1.GUID
илиTable2.OutId
должны быть неправильными.