Scala Playframework connect to mysql

I’m writting this because I had issues following the documentation that comes with playframework
the docs are wrong or at least for me it gave me an error.

The docs states that to connect to a mysql database server you have to do the following:

If you need to connect to another JDBC-compliant database, first add the corresponding driver library to your application dependencies in build.sbt e.g.:

libraryDependencies += "mysql" % "mysql-connector-java" % "5.1.18"

This above works ok, I had no problems.

Then add the corresponding JDBC configuration to the conf/application.conf file:

db.url=jdbc:mysql:database_name
db.driver=org.mysql.Driver
db.user=root
db.pass=secret

This above now has problems namely the db.driver section it returned me an error
java.lang.ClassNotFoundException: org.mysql.Driver

Searching the internet I found this answer

http://solvedstack.com/questions/steps-needed-to-use-mysql-database-with-play-framework-2-0

So the correct working version is:

db.default.driver=com.mysql.jdbc.Driver
db.default.user=root
db.default.pass=secret

db.default.url=”jdbc:mysql://localhost/database_name?characterEncoding=UTF-8″

Maybe for others this is easy to spot but for me it wasn’t.

dpkg: error processing mysql-server-5.5 (–configure)

Problem installing mysql on ubuntu.
Got the error:

start: Job failed to start
invoke-rc.d: initscript mysql, action “start” failed.
dpkg: error processing mysql-server-5.5 (–configure)

Solution that worked for me from
http://serverfault.com/questions/254629/unable-to-install-mysql-server-in-ubuntu

apt-get purge mysql-server
apt-get purge mysql-common
rm -rf /var/log/mysql
rm -rf /var/log/mysql.*
rm -rf /var/lib/mysql
rm -rf /etc/mysql
# and then:
apt-get install mysql-server –fix-missing –fix-broken

Mysql e output de erros

Engraçado tive um problema parecido mesma mensagem de erro e não tinha nada a ver com a Base de dados o problema é na config do servidor… Foda-se!

Re: ERROR 1033 (HY000): Incorrect information in file
Posted by: Stu Derby ()
Date: October 28, 2007 02:14PM

As best I can tell, this error message is produced whenever the DB is unable to perform INNODB recovery upon restart. The DB needs to assume on restart that it might have crashed, maybe power failure, and so there may be partially stored transactions in the log file that either need to be completed or unwound. If it can’t do that, recovery fails and the tables are therefore inaccessible, with this rather cryptic message.

I ran into this problem when restoring a slave DB, using the backup of the master. Someone had cleverly (not) increased the innodb_log_file_size on the slave but not the master and I was using the master’s data and log files with the slave’s my.cnf The only clues I got were the 1033 error message and the startup error message (in /var/log/mysqld.log on my system):
InnoDB: Error: log file /var/lib/mysql/ib_logfile0 is of different size 0 268435456 bytes
InnoDB: than specified in the .cnf file 0 536870912 bytes!

Making the slave’s log_file_size match the log file copied from the master made everything work (some 12 hours after I started on the problem).

I suspect there are several other ways to get this situation, probably corrupted or missing log files, path problems, etc. It would be nice if the DB would put out an error saying something like “recovery has failed, InnoDB tables not accessible” to help people focus on the earlier error (in my case the log file size issue).

Fecho do ano de 2010

Se 2009 foi um ano de mudanças 2010 não lhe ficou atrás.

Tive uma prenda fantástica em Setembro apesar de não ser o meu aniversário, prenda de 3.296kg e 51 cm de comprimento, algo fantástico e uma esposa que se revelou uma excelente mãe com a ajuda de um excelente pai 😛 , dos 3.296kg para 5.625kg e dos 51cm para os 60cm de hoje foram 3 Meses fantásticos nesse aspecto toda a evolução (adoro a evolução), o agarrar o rir o espernear-se quando quer colo, “levantar-se” a procura e reclamação pela constante atenção, o alimentar-se de duas em duas horas o evitar que os pais(principalmente a mãe) se afastem durante mais que 1 minuto é no fundo fantástico.

Entre várias complicações monetárias no final podemos dizer que tudo correu como tinha de correr 😛 (isto não diz nada). Iva a +2% aí vamos nós. Pedido de factura sempre que compro algo tornou-se um MUST estou farto de pagar pelos outros.

Em termos de trabalho o projecto no qual estou inserido tem corrido bem apesar dos solavancos chegou a um ponto estável da aplicação em que permitiu fazer melhoramentos que não tinha tempo nem oportunidade para fazer no principio e não era prioritário naquele momento.

Apercebi-me que quanto mais codigo mantenho comentado é mais provavel que o que eu estou
a fazer não seja 100% seguro.
Os testes unitários nem sempre ajudam a prever todos os problemas os issues de conectividade foram um caso desses ( bem disse que precisava de um switch para inventar com rate limiting e criar outro tipo de problemas, que um simples desligar de cabo não serve para testar ).

#javascript
Impressionante como evolui na web e daquilo que era, “filho da mãe do javascript e os browsers” passou a “assim com javascript fica muito mais user friendly”.

#php
A ideia no projecto desde o principio era criar um auto Loader mas ainda uma certa falta de direcção do projecto e ainda algumas dúvidas colocaram isto para uma feature implementada mais tarde, acabou por ter uma resolução rápida em uma manhã inspirada(?!).
Limpeza do frontend look and feel que acho que não se adequavam à aplicação e após ter usado algum tempo a aplicação de acordo com as necessidades que haviam surgido apercebemos-nos de pontos a melhorar.

#perl
As falhas de conectividade foram uma constante e aquilo que mais provocou problemas, algo que supostamente seria simples com milhares de registo viu-se complicado. Pensei em algo na tentativa de simplicidade e rapidez de execução e após uns tempos revelou-se uma dor de cabeça em termos de
gestão porque coisas que não deveriam acontecer aconteceram (dammit SQL transactions). Para corrigir resumidamente segmentei codigo, alterei codigo e consegui um bom ganho de performance.

#webservices
A tal regra do if it works don’t touch it, aplica-se aqui. Resincronizar registos de um lado para outro num sistema tipicamente Async é doloroso. Século 21 e alguns sistemas ainda são predominantemente asincronos numa tentativa de ganhar velocidade. Ganha-se velocidade perde-se eficiência e eficácia.
Algo que também se percebeu como já referi anteriomente é que, o que é colocado para testes nem sempre representa o que nos vão enviar para produtivo.

#mysql
Tem respondido bem e na minha opinião nem está optimizado a 100% configurações relativamente basicas mas o novo ano vai puxar por ele (eu pelo menos já fiz codigo para puxar por ele).
InnoDB é algo que deveria ser padrão quando se cria uma tabela.
Calcular uma max+1 de uma tabela nunca me deu tantos problemas como este ano e como método já foi encostado para canto não vá voltar a usa-lo sem querer.
Em falar nisso, temos mais umas tabelas para alterar malta.

#sysadmin
Para uns spam está a deixar de ser um problema eu saí disto à um ano, fiquei com aquilo que se chama a manutenção de serviço, alterar raid 1 para raid 5 é cool mas pode dar chatices, como:
– dear god we have to reboot now
– Resize the disk after reboot
– Where are the files?!
* Comprem a máquina com os slots cheios 😛 ou então don’t migrate usem nova partição ou espetem LVM em cima parece-me mais simples que alterar o raid.
Nem todo o equipamento que se compra caro vale o cash que se paga.
Nem tudo o que parece facilitar facilita.
Backups continuam a ser um must have e um make sure it’s working. Se possível arranjem alguém só para ver isto.

#sap
Just because it’s expensive it doesn’t mean it’s good. It means it has years in the market and many people got problems, you now don’t have to worry about. Also means a huge system with tons of maintenance and complexity above the normal. Scalability, will talk in the future…

#phpunit
Testes unitários são bons quando temos tempo para os fazer e pensar, em muitos casos ajudam a evitar entrarmos nos mesmos erros quando alteramos codigo.
(esquecia-me de falar deste factor importante de 2010 que foram os testes unitários com phpunit)

maildrop

Note to self on maildrop

– mailbox_command = /usr/bin/maildrop -d “$USER” -f “$SENDER” “$EXTENSION”
– mbox_command_maps = file
– mailbox_transport master.cf maildrop2 ( differs litely from maildrop )
– .forward

All these result on temporary fails… Since that happen’s had to activate
* maximal_queue_lifetime = 5m

– mailbox_transport results on
orig_to=<xyz@domain.pt>, relay=maildrop2, delay=0.04, delays=0.02/0/0/0.02, dsn=4.3.0, status=deferred (temporary failure. Command output: maildrop: authlib: groupid=100)

– mailbox_command results on
status=deferred (temporary failure. Command output: Unable to execute /dev/null Unable to execute /dev/null maildrop: maildir over quota. )

– mbox_command_maps results on
no error when overquota, message just get’s delivered

– .forward results on
relay=local, delay=0.03, delays=0.01/0/0/0.01, dsn=4.3.0, status=deferred (temporary failure. Command output: Unable to execute /dev/null Unable to execute /dev/null maildrop: maildir over quota. )

– local_transport by maildrop2 results in
status=deferred (temporary failure. Command output: maildrop: authlib: groupid=100)

Since I’m not using Virtual Users my option is but system users in passwd…
– mailbox_command

Added : 23 July 2008 , 22:05

Problems
– Unable to create a dot-lock.
. Wrong directory permissions ? dir permissions are ok
. wrong command? Command is correct.
. requires a valid shell ? Yes, need to have a valid shell so maildrop can create the Maildir with maildirmake in  maildroprc or execute other commands.
. .forward does everything ok

Frameworks again

Para quem pensa que frameworks é para poupar trabalho podem mudar de ideias ao saber que num caso prático demorei menos tempo a desenvolver uma app com o uso de uma class do phpclasses (developed by me) do que a usar o cake, o cake proporciona uma boa estrutura e tudo mais mas quando pretendemos incorporar o uso de app’s externas o caso complica-se.

De qualquer modo a lógica da aplicação estava feita foi só portar o code demorei nem 8 horas.

A classe que usei foi esta Mysql_class, já a tinha desenvolvido à uns 5 anos atrás mas ainda funciona tive de efectuar umas pequenas correcções, mas valeu a pena a ter criado quando criei. Já desenvolvi muita coisa à volta desta class.

Claro que como ainda era novo e não pensava nos outros o resultado final não foi muito legível.

Um dia faz-se o port para php5 😀