MT
Problema com TDBCombo na Locaweb
Olá.
Estou usando PHP 5.5 com MySQL (tanto na minha máquina de desenvolvimento quanto no servidor na locaweb).
Tenho uma tela simples de cadastro de empresas e um dos campos é um TDBCombo com as UFs. O problema é que na minha máquina funciona sem nenhum problema, mas quando a aplicação sobe pra locaweb recebo o seguinte erro:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'bmslicdb.UF' doesn't exist
O estranho é outras telas, inclusive com outros TDBCombo funcionam corretamente...
Segue a msg de erro que recebo ao tentar acessar a tela de cadastro de empresas:
File: /lib/adianti/database/TRepository.php : 185
PDO->query(SELECT * FROM UF ORDER BY sigla )
File: /lib/adianti/widget/wrapper/TDBCombo.php : 72
AdiantiDatabaseTRepository->load(AdiantiDatabaseTCriteria object,)
File: /app/control/EmpresaFormView.class.php : 30
AdiantiWidgetWrapperTDBCombo->__construct(uf_id,lctdb,UF,id,sigla,sigla)
File: /lib/adianti/core/AdiantiCoreApplication.php : 60
EmpresaFormView->__construct(EmpresaFormView,onEdit,,hbuma6amt086q6t9fvj1pee304)
File: /engine.php : 21
AdiantiCoreAdiantiCoreApplication::run(1)
File: /engine.php : 34
TApplication::run(1)
Segue os dois arquivos de configuração do banco de dados:
Local (minha máquina): lctdb.ini
host = localhost
port = 3306
name = lctdb
user = lctuser
pass = xxx
type = mysql
Arquivo na locaweb: lctdb.ini
host = bmslicdb.mysql.dbaas.com.br
port = 3306
name = bmslicdb
user = bmslicdb
pass = xxx
type = mysql
Perceba que ambos os arquivos se chamam "lctdb.ini" e na chamada do construtor do TDBCombo o parâmetro databaseName recebe "lctdb". Por isso fiz um teste alterando o arquivo da minha máquina para um banco que criei com o mesmo nome do banco que está na locaweb. Na minha máquina continuou funcionando.
$uf_id = new TDBCombo('uf_id', 'lctdb', 'UF', 'id', 'sigla', 'sigla');
Alguém pode me ajudar com isso?
Estou usando PHP 5.5 com MySQL (tanto na minha máquina de desenvolvimento quanto no servidor na locaweb).
Tenho uma tela simples de cadastro de empresas e um dos campos é um TDBCombo com as UFs. O problema é que na minha máquina funciona sem nenhum problema, mas quando a aplicação sobe pra locaweb recebo o seguinte erro:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'bmslicdb.UF' doesn't exist
O estranho é outras telas, inclusive com outros TDBCombo funcionam corretamente...
Segue a msg de erro que recebo ao tentar acessar a tela de cadastro de empresas:
File: /lib/adianti/database/TRepository.php : 185
PDO->query(SELECT * FROM UF ORDER BY sigla )
File: /lib/adianti/widget/wrapper/TDBCombo.php : 72
AdiantiDatabaseTRepository->load(AdiantiDatabaseTCriteria object,)
File: /app/control/EmpresaFormView.class.php : 30
AdiantiWidgetWrapperTDBCombo->__construct(uf_id,lctdb,UF,id,sigla,sigla)
File: /lib/adianti/core/AdiantiCoreApplication.php : 60
EmpresaFormView->__construct(EmpresaFormView,onEdit,,hbuma6amt086q6t9fvj1pee304)
File: /engine.php : 21
AdiantiCoreAdiantiCoreApplication::run(1)
File: /engine.php : 34
TApplication::run(1)
Segue os dois arquivos de configuração do banco de dados:
Local (minha máquina): lctdb.ini
host = localhost
port = 3306
name = lctdb
user = lctuser
pass = xxx
type = mysql
Arquivo na locaweb: lctdb.ini
host = bmslicdb.mysql.dbaas.com.br
port = 3306
name = bmslicdb
user = bmslicdb
pass = xxx
type = mysql
Perceba que ambos os arquivos se chamam "lctdb.ini" e na chamada do construtor do TDBCombo o parâmetro databaseName recebe "lctdb". Por isso fiz um teste alterando o arquivo da minha máquina para um banco que criei com o mesmo nome do banco que está na locaweb. Na minha máquina continuou funcionando.
$uf_id = new TDBCombo('uf_id', 'lctdb', 'UF', 'id', 'sigla', 'sigla');
Alguém pode me ajudar com isso?
Pessoal.
Eu mesmo achei o problema.
No model eu havia feito referência a
const TABLENAME = 'UF';
e no MySQL no Windows tava funcionando de boa.
Alterei para
const TABLENAME = 'uf';
E resolvido no linux da locaweb.
Depois vou investigar se o lance do case sensitive é coisa do sistema operacional ou do MySQL. De qqr forma foi resolvido.
Valeu.