В MySQL, если я использую useServerPrepStmts=true
, драйвер попытается подготовить оператор на сервере, если он считает, что это можно сделать. В случае, если сервер не может подготовить оператор (не все операторы могут быть подготовлены на стороне сервера), происходит откат к «подготовленному клиенту оператору».
У меня два вопроса:
- Какие заявления нельзя подготовить на стороне сервера?
- Почему водитель иногда думает, что оператор может быть подготовлен на стороне сервера, отправляя
COM_STMT_PREPARE
(см. здесь ) на сервер, если сервер фактически не может подготовить этот оператор? Означает ли это, что иногда prepareability
оператора зависит от некоторого предиката, который будет истинным на стороне сервера, и поэтому один драйвер не может принять правильное решение?