Arquivo

Arquivo para a Categoria ‘BD’

Programas para configurar modens usb 3G no Linux

Foi lançado o discador Open 3G, um projeto open source que facilita a configuração de modens usb 3g no Linux. Permite configurar modens como o Sony Ericsson MD300 e o Huawei E220.
Infelizmente não tem suporte ainda para o modem ZTE 622, o que tenho. O programa ainda não tem interface gráfica, mas isso é pretendido pelos desenvolvedores.

Informações e Download
Fonte: http://open-br.net/blog/

Outro programa que já existe há algum tempo é o SmartConnect 3G. Ele possui uma interface já bem legal e tem suporte a mais modens e a alguns celulares 3G.

Informações e Download

VN:F [1.8.4_1055]
Rating: 6.1/10 (8 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

Update com Join no MySQL

22, março, 2009 Manoel Campos Sem comentários

Como fazer um update em uma tabela do MySQL, com base no valor de um campo de outra tabela com a qual essa se relaciona? Veja o modelo a seguir:

update TabelaQueDesejaAtualizar, TabelaComAQualVaiRelacionar
set TabelaQueDesejaAtualizar.CampoParaAtualizar = TabelaComAQualVaiRelacionar.CampoComValorDesejado
where TabelaQueDesejaAtualizar.CampoParaRelacionar = TabelaComAQualVaiRelacionar.CampoParaRelacionar;

Exemplo:

update Funcionario, PessoaFisica
set Funcionario.codPessoa = PessoaFisica.codPessoa
where Funcionario.codPessoaFisica = PessoaFisica.codPessoaFisica;

Considerando as tabelas Funcionario e PessoaFisica, atribui ao campo codPessoa na tabela Funcionario o valor do campo codPessoa da tabela PessoaFisica, levando em conta que as tabelas Funcionario e PessoaFisica possuem um relacionamento por meio do campo codPessoaFisica existente nas duas tabelas. Desta forma, na tabela Funcionario, no campo codPessoa, teremos o mesmo valor deste campo no registro correspondente na tabela PessoaFisica.

Claro que esse campo codPessoa na tabela Funcionario não faz nenhum sentido e é totalmente redundante, sendo que o mesmo existe na tabela PessoaFisica. O exemplo foi apenas para mostrar como funciona um update com “join” no MySQL, e que deve funcionar em outros bancos. Eu lembro que no SQL Server havia uma forma diferente de se fazer isso, mas não lembro exatamente como.

VN:F [1.8.4_1055]
Rating: 10.0/10 (3 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

Driver DBExpress 4 para Firebird no Delphi 2007 e 2009

26, fevereiro, 2009 Manoel Campos Sem comentários

A IBExpert, desenvolvedora da ferramenta de mesmo nome para administração de banco de dados firebird, agora (não sei desde quando) tem um driver DBExpress 4 para Firebird no Delphi 2007 e 2009. O driver é proprietário mas possui uma versão personal, assim como a ferramenta IBExpert, porém, não pode ser distribuído. Para isto, o desenvolvedor deve comprar uma licença.

Não testei, mas se tiver a mesma qualidade da ferramenta IBExpert, o driver deve ser excelente. Uma das coisas boas é que ele tem suporte total a Unicode.

Mais informações em http://ibexpert.net/ibe/index.php?n=Main.IBExpertDBX4Firebird

VN:F [1.8.4_1055]
Rating: 1.0/10 (1 vote cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

Excluindo Constraints Foreign Key no MySQL (drop constraint)

4, fevereiro, 2009 Manoel Campos Sem comentários

O MySQL as vezes nos surpreende, devido ao fato de alguns comandos SQL ANSI não funcionarem nele, como é o caso do drop constraint para exclusão de chaves estrangeiras, as foreign keys.

O comando padrão, que funciona em vários bancos (Firebird, SQL Server e outros) é alter  table NomeDaTabela drop constraint NomeDaConstraint;

Porém, não funciona no MySQL. O comando que deve ser executado é alter  table NomeDaTabela drop foreign key NomeDaConstraint;

Se você criou uma constaint sem um nome, o sistema InnoDB do MySQL gera um automaticamente. Para saber qual o nome gerado execute show create table NomeDaTabela; Este comando mostra a estrutura da tabela, com as constraints existentes e seus respectivos nomes. Daí, basta executar alter  table NomeDaTabela drop foreign key NomeDaConstraint; para apagar a foreign key desejada.

Referência: MySQL 5.1 Reference Manual

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

Internet Explorer no Linux

25, outubro, 2008 Manoel Campos Sem comentários

Introdução

Bem, como eu abandonei o Windows praticamente de vez, utilizo ele apenas pra desenvolver em Delphi, e a partir de uma máquina virtual usando o Virtual Box, por isso estou postando muitas coisas sobre Linux.

Tá, mas tem coisas do Windows que você não tem como se livrar. Por exemplo, eu estou fazendo um curso de inglês online na English Town (excelente, diga-se de passagem, melhor que qualquer curso presencial que já tenha feito) e o site só funciona no Internet Explorer. A seguir, mostrarei algumas alternativas para ter o Internet Explorer rodando no Linux.

O Wine

Ao instalar o Wine, que permite executar aplicações Windows a partir do Linux, ele já instala uma versão do Internet Explorer. Porém, essa versão não exibe os menus nem a barra de endereços. Você pode instalar o Wine via apt-get. Se estiver usando a versão 9.04 do Ubuntu, pode executar os comandos abaixo para baixar a versão mais atual:

1
2
3
4
5
6
#Abrir o GEdit para adicionar uma nova fonte para download de pacotes
sudo gedit /etc/apt/sources.list
 
#Adicionar as linhas abaixo no arquivo, salvar e fechar o mesmo
deb http://us.archive.ubuntu.com/ubuntu jaunty universe
deb http://wine.budgetdedicated.com/apt jaunty main

Com o comando a seguir você instala o Wine:

sudo apt-get install wine

O Internet Explorer é instalado em ~/.wine/drive_c/Program Files/Internet Explorer
Para executá-lo você pode abrir o diretório acima. Lá terá um arquivo iexplore.exe. Você pode abrir as propriedades do arquivo (CTRL+ENTER) e marcar para que os arquivos .exe abram com o Wine. Talvez esteja configurado para ele abrir com o Archive Manager. Outra alternativa é, num terminal, digitar wine “c:/Program Files/Internet Explorer/iexplore.exe”

Como não terá barra de endereços para você digitar o site para onde deseja ir, você pode fazer isso via linha de comando, num terminal, digitando, por exemplo, wine “c:/Program Files/Internet Explorer/iexplore.exe” www.google.com
para abrir o google.

IEs4Linux

Outra alternativa é o projeto IEs4Linux, que está no plural não por acaso. Este projeto que usa o Wine e permite que você instale algumas versões do Internet Explorer que você desejar no seu linux, como o 5.5, 6 ou 7. Neste link do site você encontra informações de como instalar. Existe uma versão em português da página, podendo ser acessada neste link. Eu estou usando no Ubuntu e funciona muito bem. Estou tendo um pequeno incoveniente com flash, que fica piscando ininterruptamente, mas dá pra viver com isso, melhor que ter que iniciar o Windows somente para abrir um site que só funciona no IE[ca!!!! :(   ]. Outra finalidade do IEs4Linux é permitir que WebDesigners que usam Linux, possam testar seus sites no Internet Explorer, sem ter o Windows Instalado, como fala no próprio site do projeto.

Para instalar o Ubuntu 9.04, os passos são os mesmos mostrados no tutorial de instalação, basta substituir a palavra edge por jaunty (o nome da versão 9.04 do Ubuntu). Nessa versão do Ubuntu, pelo menos comigo, a instalação do Flash Player dava erro e não deixava o setup prosseguir. Assim, na tela de instalação, tive que desmarcar a opção do Flash.

Plugin IE View para Firefox

Outra alternativa é instalar o plugin IE View para o Firefox. Ele é um plugin que adiciona uma opção, quando se clica com o botão direito na aba ou no conteúdo da página no Firefox.
Nesta página há um tutorial explicando como configurar ele pra carregar o Internet Explorer do Wine no Linux. O único detalhe é que ele cita um diretório /usr/libexec que pode não existir no seu sistema (como não existia no meu). Assim, se for seguir o tutorial, apenas mude para o diretório /usr/lib. Porém, como o Internet Explorer do projeto IEs4Linux exibe os menus e a barra de endereços, mostrarei como configurar o plugin para abrir esta vesão e não o IE do Wine. Abaixo coloquei todos os passos necessários, a partir de um terminal:

1. Depois de ter instalado o IEs4Linux, a executável do IE pode ser encontrado no diretório ~/.ies4linux/bin. No meu caso, só consegui instalar no Ubuntu 9.04 o IE 5.0. Assim, no diretório ~/.ies4linux/bin tem um arquivo ie5. Então, crie um link para este arquivo, com o nome de iexplore, no diretório /usr/bin:

sudo ln -s ~/.ies4linux/bin/ie5 /usr/bin/iexplore

2. Inclua o caminho para o link /usr/bin/iexplore nas configurações do IE View e pronto. Agora, quando abrir uma página no Firefox, clique com o botão direito na aba ou no conteúdo dela e mande abrir com o Internet Explorer.

Pra terminar

Infelizmente tenho outro problema com o curso do English Town, pois para as aulas ao vivo, você precisa de uma aplicação que cria uma sala virtual, muito boa também, mas não consegui fazé-la funcionar, nem cokm o Wine. A aplicação é o Saba Centra. Nas notícias do site, até prometeram uma versão para Linux, mas isto já tem uns anos e não fizeram foi nada. Ao assinar o English Town, você tem acesso ao download do software.

VN:F [1.8.4_1055]
Rating: 10.0/10 (1 vote cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)

Pegando o último valor de auto incremento inserido no mysql

2, julho, 2008 Manoel Campos 3 comentários

Bem, vamos ao post rápido de hoje.

No MySQL e em muitos bancos existe um recurso de auto incremento que é usado para campos chave primária das tabelas, impedindo que existam dois registros com o mesmo código.

No MySQL o usuário não tem como saber previamente, de uma maneira segura, qual o próximo valor que será gerado para o campo auto incremento de uma tabela. Apenas após inserir um registro na tabela é que podemos saber. Na linguagem PHP, por exemplo, existe a função mysql_insert_id que retorna o valor gerado para o campo auto incremento no último comando insert executado. Isto é útil quando precisamos incluir registros em outra tabela que serão relacionados com o registro que foi inserido, como por exemplo, quando temos uma tabela venda e outra item_venda. A tabela venda normalmente terá um campo cod_venda auto incremento. E ao registrar uma venda, precisamos incluir pelo menos um item de venda, que estará relacionado com a venda que foi inserida. Para fazer esse relacionamento, a tabela item_venda normalmente terá um campo cod_venda para fazer essa associação, assim, o cod_venda da tabela item_venda deve ter o valor do campo auto incremento cod_venda da tabela venda. Assim, para isso que usamos, em PHP, a função mysql_insert_id.

Porém, em outras linguagem como o Delphi, não existe uma função semelhante a mysql_insert_id do PHP, logo, como fazer para retornar o valor auto incremento gerado pelo último insert? Simples, use a instrução sql select LAST_INSERT_ID(); . Independente da linguagem de programação que você usa, isto vai funcionar. Você pode até criar uma função de nome mysql_insert_id na linguagem de programação que desejar, para executar a sql mostrada acima e assim, apenas chamar a função quando desejar. Veja exemplo em Delphi utilizando os componentes DBExpress:

function mysql_insert_id(SQLConnection: TSQLConnection): Integer;
var SqlDataSet: TSqlDataSet;
begin
result:= 0;
SqlDataSet:= TSqlDataSet.Create(nil);
try
SqlDataSet.SQLConnection:= SQLConnection;
SqlDataSet.CommandText:= ’select LAST_INSERT_ID()’;
SqlDataSet.Open;
result:= SqlDataSet.Fields[0].AsInteger;
SqlDataSet.Close;
finally
SqlDataSet.Free;
end;
end;

Para chamar a função deve-se passar um objeto da classe TSQLConnection por parâmetro, que representa a conexão com o banco de dados.

Espero que seja útil, como foi pra mim.

T+

VN:F [1.8.4_1055]
Rating: 0.0/10 (0 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)
Categories: BD, Delphi, Programação, Software Livre Tags:

MySQL 5 e Firebird 2 no Delphi 2007 com DBExpress

Para os amantes do MySQL e do Delphi, até que enfim a Borland/CodeGear criou um driver DBExpress que funcione no MySQL 5.  Pelo que soube, em um dos Borland Conference que participei, o grande problema é que os desenvolvedores do MySQL faziam muitas alterações significativas no núcleo do mysql, o que tornava os drivers da Borland incompatíveis com as novas versões deste banco de dados. O Delphi 2007 veio com uma nova versão do DBExpress, a versão 4, o que tornou os antigos drivers de terceiros, para diversos bancos de dados, incompatíveis com esta nova versão. Drivers como o UIB para Firebird não funcionam mais no Delphi 2007.

O driver DBExpress oficial da Borland/CodeGerar para o Delphi 2007, de nome MySQL funciona, mas somente com versões do MySQL 5.0.27 e 4.1.22*, como informa no arquivo readme.htm na pasta do Delphi 2007, normalmente localizado em C:\Arquivos de programas\CodeGear\RAD Studio\5.0\readme.htm. Este driver funciona com a dll DBExpress de nome dbxMYS30.dll e a libmysql.dll (dll cliente do mysql). Logo, se você tiver um MySQL superior a versão 5.0.27, poderá ter problemas. Para você saber qual a versão do seu mysql, abra o prompt de comando e digite mysql -h localhost -u root -p -v onde -h é para indicar o ip/nome dns do servidor mysql e localhost é o servidor local, -u é para indicar o nome de um usuário, onde usei o usuário root, -p é para informar a senha (a mesma será solicitada após pressionar enter) e -v para mostrar a versão do servidor. Esta versão do driver DBExpress para MySQL funciona com caracteres unicode (um padrão internacional para representação de caracteres de diversas linguagens, que permite que um caractere acentuado, por exemplo, seja representado da mesma forma, independente da linguagem da aplicação/sistema operacional). A versão antiga do driver foi renomeada para dbxmysA30.dll, pois os drivers DBExpress nativos da Borland/CodeGear permitem trabalhar em modo de compatibilidade com o DBExpress 3. A letra A contida no nome do driver indica que o mesmo só aceita caracteres ASCII.

No meu caso, estou utilizando o MySQl 5.0.41 e a aplicação funciona normalmente, mas em tempo de projeto (design time), ocorre um erro informando que a biblioteca libmysql.dll não foi encontrada, e não adianta sair colando ela em tudo que é pasta que lhe vier a cabeça que o Delphi não a encontra. Como podemos não encontrar para baixar a versão 5.0.27 do MySQL, ou outra compatível com o driver DBExpress do Delphi, uma solução seria utilizar uma versão anterior da biblioteca libmysql.dll que pode ser encontrada nos pacotes de instalação do PHP, por exemplo. Você pode baixar a versão 5.0.22 da libmysql.dll, que funciona no Delphi 2007, nesse link, nesse, ou nesse. Basta descompactar esta dll na pasta bin de instalação do Delphi 2007, normalmente em C:\Arquivos de programas\CodeGear\RAD Studio\5.0\bin, que o driver vai funcionar em tempo de projeto no Delphi.

Quanto ao Firebird 2, ainda bem que o colega Thiago Borges de Oliveira desenvolveu um Driver DBExpress 4 gratuito exclusivo para o Delphi 2007, que está em versão Release Candidate, mas testei e tá funcionando direitinho, porém, podem ocorrer problemas por não ser uma versão final. O driver possui um setup que automatiza o processo de instalação, porém, requer o December Update do Delphi 2007 para funcionar, sem ele, até o processo de instalação pode falhar.

VN:F [1.8.4_1055]
Rating: 10.0/10 (2 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)
Categories: BD, Delphi Tags:

Alterando a pasta de dados do PostgreSQL 8 no Windows

22, fevereiro, 2008 Manoel Campos Sem comentários

Bem, hoje vou postar algo sobre uma necessidade que tive no PostgreSQL no Windows, e que porém, deu bem mais trabalho de resolver do que com o MySQL, por exemplo. Eu tenho o costume de colocar todos meus dados em uma unidade D: , para evitar de precisar formatar o Windows ( o que não é raro :( ) e perder arquivos importantes. Assim, sempre altero a pasta padrão onde os servidores de bancos de dados que uso (Firebird, SQL Server, MySQL e PostgreSQL) para esta unidade para evitar de perder meus bancos de dados.

Para realizar esta tarefa no PostgreSQL, logo procurei um arquivo postgresql.conf. Logo encontrei o arquivo na pasta data de instalação do PostgreSQL. Porém, ao encontrar, descomentar e alterar a chave data_directory no arquivo, o servidor não iniciou mais. Alterei as permissões da pasta, tentei colocar barra no final do endereço da pasta, tentei usando as barras \ e / e nada.

Na luta em tentar descobrir como resolver o problema, olhando no serviço do PostgreSQL na janela de administração dos serviços do Windows, verifiquei que o endereço da pasta de dados era passado por parâmetro para o serviço. Logo, pensei em reinstalar o serviço. Para isto, depois de buscar no google e encontrar apenas pistas de como resolver, encontrei na pasta bin do PostgreSQL o utilitário pg_ctl, utilizado para  configurar e controlar o serviço do PostgreSQL. Vendo os parâmetros disponíveis, chamando pg_ctl –help, logo descobri como remover e reinstalar o serviço, que deve ser feito com um usuário administrador.

Assim, abra o prompt de comando na pasta bin de instalação do PostgreSQL.
Para  remover o serviço digite:
  pg_ctl unregister -N “nome_serviço_pgsql” -U WinUser  -P SenhaWin

nome_serviço_pgsql é o nome do serviço do PostgreSQL nos serviços do Windows. Para saber qual é esse nome, na janela de adminsitração de serviços do Windows, encontre o PostgreSQL e pressione ALT+ENTER para abrir as propriedades do serviço. Na janela que abre, na primeira aba, existe um campo “Nome do serviço” contendo o nome que deve ser utilizado para remover o serviço.  Veja exemplo da utilização do comando:

    pg_ctl unregister -N “pgsql-8.2″ -U postgres -P postgres

WinUser deve ser o nome do usuário do Windows, criado para rodar o PostgreSQL. Este usuário foi definido durante a instalação do PostgreSQL e o nome padrão é postgres. SenhaWinUser é a senha deste usuário, também definida durante a instalação do PostgreSQL.

Para  registrar o serviço digite:
  pg_ctl register -N “nome_serviço_pgsql” -U WinUser  -P SenhaWinUser -D “diretorio_desejado”

diretorio_desejado deve ser o diretório onde deseja que os bancos do PostgreSQL sejam salvos. Não esqueça de dar permissão total para o usuário postgres neste diretório.

nome_serviço_pgsql é o nome que você deseja dar para o serviço a ser registrado.
Veja exemplo de utilização do comando abaixo:

  pg_ctl register -N “pgsql8″ -U postgres -P postgres -D “D:\PostgreSqlData\”

Agora, você precisa copiar (ou recortar) todos os arquivos da pasta Data de instalação do PostgreSQL para a pasta que você especificou no parâmetro -D .

Depois reinicie o servidor PostgreSQL e é isso. T+

VN:F [1.8.4_1055]
Rating: 1.0/10 (1 vote cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)
Categories: BD, Windows Tags:

Hospedagem de sites com banco MySQL 5

2, novembro, 2007 Manoel Campos 1 comentário

Recentemente precisei hospedar um sistema que desenvolvi em ASP.NET. Não sou muito fã do MySQL pois este só passou a ter recursos como Triggers, Views e Stored Procedures na versão 5 enquanto bancos como o Firebird já tem isto há tempos, é bastante simples de se implementar. As Storeds Procedures do Firebird são imbatíveis, principalmente pelo fato de você poder fazer elas retornarem um conjunto de dados, se comportando no final como uma View.

Ao procurar uma empresa de hospedagem para o sistema que comentei notei que a maioria só disponibilizava incluso no preço do pacote de hospedagem ou o MySQL ou o SQL Server 2005 Express, mas a maioria só dava o MySQL incluso. Assim, para não aumentar o valor que o cliente deveria pagar pela hospedagem, resolvi usar o MySQL mesmo.

Utilizo bastante estes recursos de Views, Triggers e Stored Procedures. Durante o desenvolvimento da aplicação no meu servidor local tudo funcionava bem. Utilizando a ferramenta EMS SQL Manager 2007 for MySQL criei algumas views e triggers no MySQL sem problemas. Ao gerar o script para criar o banco no servidor remoto da empresa de hospedagem começaram os problemas. Tanto a criação de views quanto de triggers dava um erro referente a permissões de acesso para executar os comandos. Por padrão a ferramentas de administração utilizada é o phpMyAdmin, uma ferramenta web para administração de bancos MySQL. Devido ter passado por muitos problemas na primeira empresa que contratei para hospedar o sistema e ter achado anti-profissional o atendimento deles, vou informar aqui o nome da mesma, a qual não recomendo a ninguém que hospede sites lá. Estou falando da empresa Dominal. Depois de vários chamados abertos tentando resolver o problema, o “profissional” que estava tratando do meu caso insistia em dizer que as minhas instruções SQL estavam erradas, sendo que as mesmas eu rodava perfeitamente no meu banco local. Este dito “profissional” teve a audácia de me mandar uma apostila de SQL insinuando que eu precisava aprender SQL. Até mandei pra ele os links da documentação oficial do MySQL mostrando que meus comandos estavam corretos, porém ele insistia em dizer que estavam errados.

Pra não ficar de teimoso, até mesmo tentei rodar os comandos que ele julgava estarem certos, tanto no meu banco, como no banco do servidor da dominal, e os comandos, é óbvio, davam como incorretos. Pra mim, o recebimento da apostila de SQL foi a gota d’água, cancelei no mesmo dia a hospedagem.

Agora estou hospedando o sistema na hospedix. O preço é bom, 25,90 mensal. Lá tive os mesmos problemas, porém, quando abri o chamado de suporte, detalhando o que estava acontecendo, não me mandaram uma resposta dizendo que meus comandos SQL estavam errados. Estão tentando resolver o problema com profissionalismo. O problema ainda não foi resolvido mas acredito que descobri o motivo. A versão da biblioteca libmysql.dll usada no phpMyAdmin da hospedix é 4.x e no meu phpMyAdmin local a versão é 5.x. No meu phpMyAdmin os comandos também rodaram sem problemas. Já até mandei essa informação para o suporte e estou aguardando um retorno. Mas de agora, recomendo a hospedix, pois são bastante profissionais, tem um sistema de administração muito bom, bastante automatizado, e o preço é excelente, diferente da conceituada locaweb que só fornecia incluso no pacote o Microsoft Access (Acredite se quiser. Eca, isso nem é banco de dados) e só pelo MySQL eram 50,00 a mais na mensalidade, agora que mudaram os planos, mas já tinha contratado o serviço do hospedix. Como não conecto no servidor usando usuário root, o problema pode ser também, provavelmente, nas permissões concedidas ao meu usuário.

Bem, resolvi escrever este post para tornar pública a minha indignação com a empresa de hospedagem dominal.com e ajudar quem possa estar passando por um problema desses com o MySQL 5.

T+

VN:F [1.8.4_1055]
Rating: 4.0/10 (1 vote cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)
Categories: BD Tags: , ,

Identificadores lowercase em MySql no Windows

29, agosto, 2007 Manoel Campos 6 comentários

O MySql, por ser um banco muito ágil, leve e bastante popular, está disponível em diversos planos de hospedagem de sites por aí. Eu particularmente prefiro o PostgreSQL e o Firebird, pois possuem recursos de views, stored procedures e triggers a bastante tempo, coisas que o MySql só veio ter na versão 5.

Pelo fato de o MySql ser incluído sem custo nos planos de hospedage, tive que utilizá-lo num sistema web de gerenciamento financeiro que estou desenvolvendo para um cliente, utilizando Borland Developer Studio 2006, com linguagem ASP.NET e Delphi.

O MySql no Windows é case insensitive, porém, em um servidor Linux é case sensitive. Aí começam os problemas. No Windows, o padrão do MySql é criar os identificadores (tabelas, nomes de campos e tudo mais) em minúsculas (lower case). Mesmo que você coloque o nome de uma tabela, por exemplo, entre apóstrofos, o MySql no Windows cria a tabela com nome em minúsculas. Assim, mesmo fazendo create table Cliente …. ou create table `Cliente`…, ele criará a tabela como cliente (tudo minúsculo). Ao fazer a sincronização da estrutura do banco de dados de desenvolvimento, no servidor Windows, para um servidor Linux de produção serão descobertos os problemas. Como no Linux o MySql, por padrão, obedece o case dos nomes dos objetos, se você tem uma tabela Cliente e gerar um script sql a partir do seu banco no servidor Windows com uma instrução como drop table cliente a mesma não será executada, pois no banco no servidor Linux não existe uma tabela cliente e sim uma tabela Cliente.

Desta forma, o script sql gerado no seu banco no servidor Windows deverá ser todo modificado manualmente para poder rodar no servidor MySql no Linux.

Depois de estar de saco cheio de ter que ficar ajustando script na mão, resolvi procurar na net como resolver isto, até que encontrei algumas perguntas em fóruns que me levaram a este link no site do MySql. Lá mostra que existe um parâmetro que você pode usar no MySql para definir este comportamento. Assim, resumindo, você precisa adicionar a linha a seguir no arquivo my.ini, localizado na pasta de instalação do mysql, que sendo a versão 5, normalmente está em c:\arquivos de programas\mysql\mysql server 5\

set-variable = lower_case_table_names=0

Onde o parâmetro lower_case_table_names define se os identificadores ficarão todos em minúsculas ou não. Assim, defini 0 para indicar que não.

Em Windows, por ter um sistema de arquivos case insensitive, segundo o site do MySQL, forçar os identificadores a serem case sensitive, mudando lower_case_table_names para zero, pode corremper índices ao acessar tabelas MyISAM com o case diferente do que foi definido. Mas como não uso tabelas MyISAM, não tenho com o que me preocupar.

Mais informações em http://dev.mysql.com/doc/refman/5.0/en/identifier-case-sensitivity.html

Isto foi o que aprendi de novo hoje.
Espero que ajude muita gente.
T+

VN:F [1.8.4_1055]
Rating: 10.0/10 (2 votes cast)
VN:F [1.8.4_1055]
Rating: 0 (from 0 votes)
Categories: BD, Windows Tags: , ,