MS-доступ не может удалить - PullRequest
1 голос
/ 31 августа 2009

ms-access подключается к локальной базе данных mysql

следующий код возвращает ошибку:

Public Function run_sql(strSql As String)
On Error GoTo lblError
CurrentDb.Execute strSql, dbFailOnError
lblExit:
    Exit Function
lblError:
    MsgBox Err.Number & ": " & Err.Description
    Resume lblExit
End Function

strSql = "УДАЛИТЬ ИЗ tblUsersSubjects WHERE user_id = 2007;" - Я запустил этот оператор, он работает отлично, но доступ дает мне эту ошибку: 3086: Не удалось удалить из указанных таблиц

в чем причина этой ошибки?

Структура таблицы:

CREATE TABLE `tbluserssubjects` (
  `user_id` int(11) NOT NULL,
  `subject_id` int(11) NOT NULL,
  `other` varchar(50) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

обратите внимание, что я могу выполнить необходимую операцию удаления, используя оболочку вместо доступа

Ответы [ 3 ]

2 голосов
/ 31 августа 2009

С помощью Access вы можете открыть связанную таблицу, tblUsersSubjects, в представлении таблицы данных и отредактировать или удалить ее в представлении таблицы данных? Если нет, Access может рассматривать соединение с таблицей MySql только для чтения. Попробуйте удалить ссылку (в Access; не в самой таблице в MySql). Затем заново свяжите таблицу в Access и обязательно сообщите Access, какое поле (или комбинацию полей) использовать в качестве первичного ключа. Если Access не знает о первичном ключе связанной таблицы, ссылка будет доступна только для чтения.

После автономных обсуждений с Алексом я хочу добавить к этому ответу:

Доступ изначально не распознал, что используйте в качестве первичного ключа, чтобы ваша связанная таблица была доступна только для чтения со стороны доступа. Я предполагаю, что это потому, что ваше утверждение CREATE TABLE не включить ограничение первичного ключа. Но я на самом деле не знаю сведения о том, как Access автоматически идентифицирует первичный ключ при связывании с внешний стол Возможно, при отсутствии четко определенного первичный ключ, он может искать поле с Not Null и Unique ограничения. Но инструкция CREATE TABLE не содержит каких-либо уникальных ограничений на ваш MySql стол тоже.

Поэтому, когда Access не может автоматически угадать первичный ключ внешней таблицы, вы должны указать ему, какое поле (или поля) использовать в качестве первичного ключа ... , если вы не хотите, чтобы связанная таблица быть доступным только для чтения из Access.

1 голос
/ 31 августа 2009

Таблица в Access или MySql? Если это в MySql, скорее всего, у вас нет необходимых прав для редактирования данных таблицы. Проверьте строку подключения, которая указывает на таблицу MySql, и убедитесь, что тот, у кого вы подключаетесь, имеет разрешения на удаление этой таблицы.

Кроме того, имеет ли эта таблица какие-либо связи между внешними ключами и другими таблицами? Возможно, вы пытаетесь удалить запись, которая может привести к нарушению первичного ключа какой-либо другой таблицы.

0 голосов
/ 31 августа 2009

Может быть, проблема чувствительна к регистру?

Вы ввели: "tbluserssubjects" для структуры таблицы, но в запросе вы ввели "tblUsersSubjects" (заглавные U и S)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...