quinta-feira, 10 de março de 2011

Alguns erros comuns no MySQL

Antes de prosseguirmos nos comandos, vamos aproveitar para ver alguns erros muito comuns no console do MySQL.
Primeiro, sobre a falta de ponto e vírgula:
Ao digitar um comando qualquer, por exemplo, show databases, se esquecermos de inserir ";" ao final da linha e teclarmos ENTER, o MySQL interpreta linha em edição aguardando o caractere que finaliza - no caso ";" - e exibe um "prompt' ( -> ). Podemos finalizar digitando ";" e teclando ENTER, deste modo, executando a linha normalmente. Ou digitar \c para sair do atual modo de edição (leia desconsiderar o que estava sendo feito), conforme podemos ver abaixo:

mysql> show tables
-> ;
+----------------------+
| Tables_in_biblioteca |
+----------------------+
| livros |
| socios |
+----------------------+
2 rows in set (0.03 sec)

mysql> show tables
-> \c
mysql>

Também podemos ver o modo de edição em um Create Table. Podemos fazer de duas formas:

mysql> Create table X(
-> id int,
-> nome char(10),
-> cidade char(15)
-> );
Query OK, 0 rows affected (0.03 sec)

Ou

mysql> create table X(id int, nome char(10),cidade char(15));
Query OK, 0 rows affected (0.05 sec)

Da mesma forma, é fácil cometer um pequeno erro em um INSERT:

mysql> insert into x(id,nome,cidade)values(10,"marcelo","canoas);
"> "
-> ;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '' at
line 1

Neste exemplo, o erro foi a falta de " após digitar canoas, encerrando o valor. O interpretador do MySQL indentificou a falta de " e entende que a linha ainda está sendo digitada, aguardando as aspas. Após isto, aguarda a finalização, só que o ";" gera o erro, pois a sintaxe está incorreta, como veremos mais abaixo.

mysql> insert into x(id,nome,cidade)values(10,"marcelo","canoas);
"> "
-> );
Query OK, 1 row affected (0.08 sec)

Agora o exemplo foi finalizado corretamente, mas o dado inserido não será CANOAS, mas CANOAS); , já que foi o valor que ficou entre as aspas.

mysql> insert into x(id,nome,cidade)values(10,"marcelo","canoas);
"> "
-> \c

Neste último exemplo vimos que o dado CANOAS ficará incorreto , então decidimos por encerrar o comando sem gravar nada, usando \c

Aí estão algumas explanações simples, mas que podem orientar quem está começando a usar a interface em modo texto.

Nenhum comentário: