Mostrando postagens com marcador mysql. Mostrar todas as postagens
Mostrando postagens com marcador mysql. Mostrar todas as postagens

segunda-feira, 12 de outubro de 2009

Ruby+Rails+MySQL+Windows

Buenas!
Este vai ser outro post daqules "coisas que ainda vou precisar, novamente".

Hoje, tive que, infelizmente, instalar RoR no windows aqui no trabalho, e como era de se esperar, não foi uma tarefa nada trivial.

Me bati bastante com a instalação Ruby1.8.6 + GEM + Rails 2.3.4 + MySQL 5.1, se esse é o seu caso, e você chegou nesse post através do google procurando por um erro ao rodar a aplicação com mysql por causa de uma DLL (libmySQL.dll), fique feliz, vc chegou a solução.

O erro que aparecia era algo assim:

!!! The bundled mysql.rb driver has been removed from Rails 2.2. 
Please install the mysql gem and try again: gem install mysql.
rake aborted!
126: The specified module could not be found.   - 
c:/ruby/lib/ruby/gems/1.8/gems/mysql-2.7.3-x86-mswin32/ext/mysql.so
 
(See full trace by running task with --trace)

Para dar crédito a pessoa de quem roubei li essas informações (http://www.meupost.com/2009/03/10/problema-do-rails-222-com-o-mysql-em-windows/), vou reproduzir seu post aqui, apenas para quando eu precisar novamente eu consiga achá-lo bem facilmente, e pra não correr o risco de seu site sair do ar =)

Resumindo, a resolução dos seus problemas é:

Mesmo que você tenha o MySQL5.1, você precisa copiar a DLL libmySQL.dll do MySQL5.0 e colar no diretório: %RUBY_HOME%\bin. Sim, mesmo que seja o 5.1, você precisará da LIB do 5.0.

Mas e agora tiu, onde eu encontro a DLL do 5.0, preciso baixar e instalar apenas para pegar a DLL? Calma, meu pequeno gafanhoto, aqui vai a URL:
http://instantrails.rubyforge.org/svn/trunk/InstantRails-win/InstantRails/mysql/bin/libmySQL.dll

Caso nada de certo, tente o InstantRails =)

Abraços!

quinta-feira, 6 de dezembro de 2007

Problemas com Hibernate e MySQL

Ontem, estava ajudando um amigo com um problema que estava acontecendo num sistema que ele estava desenvolvendo. O escopo era o seguinte:

Um software de controle Web, utilizando o banco de dados MySQL 5, utilizando Hibernate. Outro pequeno software que fica rodando no servidor, como um daemon, executando algumas tarefas, e caso aconteça um erro ele insere um registro em uma certa tabela, no mesmo banco MySQL que o sistema Web utiliza.

Até ai tudo bem. O que acontecia é que, o software daemon inseria coisas no banco, porém o software Web, não conseguia enxergar estes novos dados inseridos. Começamos a quebrar a cabeça pensando que era problema no hibernate, mudamos toda a parte de cache, desabilitamos o cache L2 do hibernate, tiramos o cache daquela consulta, tiramos o cache total da session, e nada. E realmente não podia ser aquilo, porque o mesmo esquema de configuração usado lá é o mesmo esquema usado em outros softwares que estamos desenvolvendo.

Então, após muita busca, encontramos a seguinte documentação:
http://mysql2.mirrors-r-us.net/doc/refman/5.0/en/innodb-transaction-isolation.html

O problema que ocorria era justamente no MySQL, pois ele por padrão usa um modo de cache interno para otimização de desempenho, que realmente não é muito interessante. E quando a aplicação Daemon comitava o registro, a aplicação web não via aquele registro, por causa do cache do MySQL.

A solução foi então aplicar a configuração referida no link acima, que é:

  1. Baixar o MySQL
  2. Editar o arquivo [dir-install-mysql]/my.ini
  3. Procure a linha [mysqld]
  4. adicione o seguinte, logo abaixo:
    transaction-isolation=READ-COMMITTED
  5. Startar o MySQL
Isso fará com que o MySQL atualize o seu cache, com os dados gravados por outras aplicações ou conexões/sessões.

obs: Tem uns comentários interessantes, no final da página do mysql.

Espero que isso ajude alguém!

Valeu.