Dúvida - MySQL e Joomla

MPalhas

Power Member
Estou no estágio a trabalhar com componentes para o Joomla e tive necessidade de criar um backup da instalação do Joomla (ficheiros PHP + Base de Dados). Deixei as pastas do backup no mesmo sitio das originais, apenas com um nome diferente, mas reparei numa coisa estranha.

Ao consultar a nova BD com o PHPMyAdmin (estou a usar o Wamp), vi que as 4 tabelas que correspondem a um componente especifico (RSForms) não aparecem em lado nenhum, mesmo estando os ficheiros na pasta. Também não são detectadas pelo Joomla, é como se nem existissem.

Como na BD original isto não acontecia, fiz umas experiencias mudando os nomes das pastas da BD e descobri que essas 4 tabelas só são detectadas quando a pasta tem o nome original. também não são detectadas se a BD for copiada para outro computador.

vendo as queries que foram usadas para criar as tabelas não encontrei nada de estranho a não ser isto que não sei o que significa:

Código:
CREATE TABLE `#__forme_config` (
`id` int(11) NOT NULL  AUTO_INCREMENT,
`setting_name` varchar(64) NOT NULL default '',
`setting_value`  text NOT NULL,
PRIMARY KEY (`id`) )


INSERT INTO `#__forme_config` ( `id` ,  `setting_name` , `setting_value` )
VALUES ('', 'global.register.code',  '')


INSERT INTO `#__forme_config` ( `id` , `setting_name` ,  `setting_value` ) VALUES ('', 'global.update.check', '0000-00-00');

aqueles global.register.code e global.update.check terão alguma coisa a ver com isto? fora isso o resto das queries são apenas para criar tabelas normais, e não estou a ver como é possivel que se consiga esconder as tabelas do PHPMyAdmin

também não me parece que seja bug porque o componente em questão requer que se compre uma licença válida apenas para um computador, e seria muita coincidencia um bug afectar precisamente as tabelas que precisam de estar protegidas devido á licença.
 
Código:
INSERT INTO `#__forme_config` ( `id` ,  `setting_name` , `setting_value` )
VALUES ('', 'global.register.code',  '')

aqui estás a inserir na tabela uma coluna.
tens que ter alguns cuidados ao fazer isto.
primeiro tens que respeitar todas as restrições que estejam impostas na tabela (e BD).
neste caso primary key (assumindo que não há assertions etc).
neste caso visto que o ID é auto inc, não o deves explicitamente inserir, o teu insert deve ser só
insert into xx (not-auto1, not-auto2) values ("xpto","1234")
outra restrição que estás a violar é a
Código:
`setting_value`  text NOT NULL
que obriga este campo a ser não nulo, como não tens default nao nulo, isto deve dar barraca tambem.
cuidado também quando estás a inserir, uma primary key (ou qualquer outro "unique") não pode estar repetido na BD, se tentares fazer algo ilegal como isto, ele não deixa.

espero ter sido claro, caso contrario diz, que eu tento melhor :)
 
foste claro, sim mas não era essa a minha duvida.
essas queries não fui eu que fiz. elas foram feitas pelo autor do componente, e estão incluidas no pacote de instalação ou seja, são executadas na BD ao instalar o componente no Joomla

se o que dizes é verdade, de que não se deve incluir um elemento AUTO INC ao inserir valores, então poderia ser um grande erro do autor, mas sendo um componente open-source e muito popular seria de esperar que alguém tivesse detectado isso.
mas vendo essas tabelas no PHPMyAdmin elas pareceram-me estar preenchidas correctamente, o globa.register.code estava no segundo campo da tabela, e o 3º campo, mesmo sendo NOT NULL, se bem me lembro estava mesmo vazio (agora só tenho acesso a BD na 2ª feira, eu depois confirmo isso)


mas como já disse, não era essa a duvida. o que eu não percebo e como é possivel que as tabelas fiquem "escondidas" ao mudar o nome da BD ou ao copiá-la para outro computador
 
Back
Topo