Иногда при выборке из таблицы, причем без всяких выкрутасов, результат получается только для чтения потому что "To edit table data, the SELECT statement must include the primary key column(s)"
Особенно это неприятно, когда в выборке есть именно эти поля и нет ничего лишнего. Возникает вопрос: а чего ему тогда надо? Оказывается, в этом месте MW очень чувствительна к регистру: имена ключевых полей должны быть записаны точно так же, как в описании таблицы, и если в ключе прописано поле, скажем, HARDWARE_ID, а в запросе - hardware_id, то, хотя с т.з. самого мускуля всё верно, но с т.з. MW есть ошибка.
Теперь поговорим о безопасном обновлении. Иногда вылезает, и я даже не понял, кто это выдает - MW или мускуль, сообщение о том, что нельзя сделать большой апдейт таблицы, потому что включено безопасное обновление (safe update).
Обходим эту проблему просто:
1. перед запросом выполняем
2. выполняем запрос
3. выполняем (чтобы восстановить статус кво)
Особенно это неприятно, когда в выборке есть именно эти поля и нет ничего лишнего. Возникает вопрос: а чего ему тогда надо? Оказывается, в этом месте MW очень чувствительна к регистру: имена ключевых полей должны быть записаны точно так же, как в описании таблицы, и если в ключе прописано поле, скажем, HARDWARE_ID, а в запросе - hardware_id, то, хотя с т.з. самого мускуля всё верно, но с т.з. MW есть ошибка.
I was getting the read-only problem even when I was selecting the primary key. I eventually figured out it was a casing problem. Apparently the PK column must be cased the same as defined in the table. using: workbench 6.3 on windowsИсточник информации: https://stackoverflow.com/a/52103418/4250302
Read-OnlySELECT leadid,firstname,lastname,datecreated FROM lead;
Allowed editSELECT LeadID,firstname,lastname,datecreated FROM lead;
Теперь поговорим о безопасном обновлении. Иногда вылезает, и я даже не понял, кто это выдает - MW или мускуль, сообщение о том, что нельзя сделать большой апдейт таблицы, потому что включено безопасное обновление (safe update).
Обходим эту проблему просто:
1. перед запросом выполняем
SET SQL_SAFE_UPDATES = 0;
2. выполняем запрос
3. выполняем (чтобы восстановить статус кво)
SET SQL_SAFE_UPDATES = 1;
Источник: https://stackoverflow.com/a/57683093/4250302SET SQL_SAFE_UPDATES = 0;
your code SQL hereSET SQL_SAFE_UPDATES = 1;
Комментариев нет:
Отправить комментарий
Пожалуйста, воздержитесь от грубостей и персональных нападок.
Я не против матерщины, но она должна быть уместной и использоваться для выражения эмоций, а не в качестве основного средства выражения мыслей.