Добрый день.
Хотел написать такой код, для оптимизации БД MySQL:
$optimizeCommand = Yii::app()->db->createCommand('
OPTIMIZE TABLE :tableName;
');
$analyzeCommand = Yii::app()->db->createCommand('
ANALYZE TABLE :tableName;
');
array_map(function ($tableName) use ($optimizeCommand, $analyzeCommand) {
$optimizeCommand->execute([':tableName' => $tableName]);
$analyzeCommand->execute([':tableName' => $tableName]);
}, ['table1', 'table2', 'table3']);
Но, оказалось что в итоге запросы получаются такие:
OPTIMIZE TABLE 'table1';
ANALYZE TABLE 'table2';
т.е. значение параметра tableName обрамляется в ковычки. Это является лишним и влечёт за собой ошибку MySQL:
Можно ли решить эту проблему именно в такой постановке (варианты с генерацией одного большого SQL-запроса для всех таблиц не интересны) ?
Например у метода bindValue есть параметр dataType. Но никакого подходящего значения я не нашёл.