O analisador não oferece suporte a uma subconsulta no local em que você está tentando usá-lo.
Aqui está o trecho da fonte do MySQL, de sql/sql_yacc.yy:
create_table_option:
. . .
| AUTO_INC opt_equal ulonglong_num
O que você deve ler lá é que o
AUTO_INCREMENT
A opção table aceita apenas um único número literal, não uma expressão ou uma subconsulta ou uma variável ou qualquer outra coisa. Portanto, você simplesmente não pode definir o AUTO_INCREMENT na mesma instrução em que SELECT MAX(id)+1
. Mas você não precisa.
O MySQL nunca alocará um id de incremento automático menor que o maior valor atualmente na tabela. Portanto, se você tiver uma tabela com valor de id 102, o próximo valor alocado será pelo menos 103.
Você pode até tentar definir AUTO_INCREMENT=50 explicitamente, mas isso será aumentado automaticamente para MAX(id)+1.