Virtual Hosts – MAMP

Para quem recorre ao MAMP como ambiente de desenvolvimento e pretende configurar Virtual Hosts aqui fica um How To em dois passos.

  1. Editar o ficheiro /Applications/MAMP/conf/apache/httpd.conf com um qualquer editor de texto (ex. Vim), acrescentando no final a seguinte entrada:
    NameVirtualHost 127.0.0.1
    <VirtualHost 127.0.0.1>
    	DocumentRoot "/Applications/MAMP/htdocs/site1/"
    	ServerName site1.dev
    </VirtualHost>
    <VirtualHost *>
    	DocumentRoot "/Applications/MAMP/htdocs/"
    	ServerName localhost
    </VirtualHost>
  2. Editar o ficheiro /etc/hosts(na raiz do sistema) com um qualquer editor de texto (ex. Vim), acrescentando a entrada ‘site1’ como abaixo:
    ##
    # Host Database
    #
    # localhost is used to configure the loopback interface
    # when the system is booting.  Do not change this entry.
    ##
    127.0.0.1       localhost site1.dev
    255.255.255.255 broadcasthost
    ::1             localhost
  3. Não há duas sem três: reinicie o MAMP (Stop Servers > Start Servers ou Quit)

Para testar, coloque um ficheiro em /Applications/MAMP/htdocs/site1/ e aceda a www.site1.dev a partir do seu browser.
Senão alterou a porta na qual o MAMP (na verdade o Apache que vem com este) está a servir, então deverá aceder através de www.site1.dev:8888

A escolha do TLD é opcional, tendo optador por .dev para projectos em desenvolvimento.

MySQL Triggers

Trigger, do inglês “gatilho”, é o nome dado a procedimentos armazenados numa base de dados e activados por eventos específicos numa tabela. No conhecido SGBD MySQL (agora da Sun) foram introduzidos na versão 5.0.2.

Toda a documentação relativa ao uso de Triggers poderá ser consultada no site do MySQL, devendo dedicar-se especial atenção à Secção D.1. “Restrictions on Stored Routines, Triggers, and Events” relativa às restrições a que estes estão sujeitos.

Estas linhas devem-se ao tempo que perdi ao tentar justificar o erro: “Not allowed to return a result set from a trigger“.
À semelhança dos procedimentos, qualquer operação de extracção de informação, entre outras (ver restrições), tem obrigatoriamente de ser feita para variáveis definidas pelo utilizador (incluo nestas a possibilidade de os dados serem enviados para ficheiro).

Estando agora consciente destas restrições deixo um exemplo para aqueles que depararem com esta limitação:

1
2
3
4
5
6
CREATE TRIGGER teste AFTER INSERT ON tabela
FOR EACH ROW
BEGIN
SET @newID;
SELECT @newID:=NEW.id;
END;

Embora o valor de NEW.id seja armazenado na variável previamente definida, o resultado da execução do trigger será um set com o elemento @newID.
A fórmula de sucesso segue abaixo:

1
2
3
4
5
6
CREATE TRIGGER teste AFTER INSERT ON tabela
FOR EACH ROW
BEGIN
SET @newID;
SELECT NEW.id INTO @newID;
END;

MySQL Workbench 5.0.15 RC1

Tem este artigo como principal objectivo alertar os interessados para o lançamento da versão 5.0.15 release candidate 1 do MySQL Workbench.

Para quem não está familiarizado com a aplicação, trata-se de uma ferramenta visual para concepção de bases de dados, desenvolvida por uma equipa da MySQL liderada por Michael G. Zinner da qual fazem ainda parte Alfredo Kojima, Vladimir Kolesnikov, Sergei Tkachenko, Andrii Nikitin e Johannes Taxacher.

Actualmente está disponível nas versões Community Edition (OSS) e Standard Edition (SE) (ver quadro comparativo) para Microsoft Windows, estando no entanto  planeadas versões para Linux e Mac OS.