Olha estas marcações que fiz, elas marcam o inicio e o fim da estrutura da tabela, o parentese que está no FIM tem de ser removido, senão vai continuar dando erro no seu código,
Quanto aos scripts que te falei, o que eu faço é para cada tabela eu crio um arquivo, separando cada instrução CREATE TABLE em um arquivo diferente,
pra mim funciona para organizar o, se você usa um arquivo só pra criar as tabelas, e se forem muitas ou se elas tiverem muitos campos, pode ser difícil
para achar erros, como foi pra você neste caso, assim eu rodo um arquivo por vez, e se der erro fica mais fácil procurar e encontrar onde está o problema, pois
vão ser poucas linhas de código para procurar, vou postar uma tabela que criei pra você ver:
este é o script da minha tabela clientes, são poucos campos, mas mesmo se forem muitos fica fácil de procurar alguma vírgula ou parentese mal colocado.
USE local;
DROP TABLE IF EXISTS clientes;
CREATE TABLE clientes(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(40) NOT NULL,
telefone VARCHAR(10) NOT NULL,
endereco VARCHAR(40) NOT NULL
);
Outra tabela, outro arquivo:
USE local;
DROP TABLE IF EXISTS detalhe_vendas;
CREATE TABLE detalhe_vendas(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
id_cliente INT NOT NULL,
id_sabor INT NOT NULL,
CONSTRAINT FK_id_cliente_vendas FOREIGN KEY (id_cliente) REFERENCES clientes(id),
CONSTRAINT FK_id_sabor_vendas FOREIGN KEY (id_sabor) REFERENCES vendas(id)
ON DELETE CASCADE
ON UPDATE CASCADE
);