Ask a Question related to Coldfusion Database Access, Design and Development.
-
lx_xpto #1
One command, too much insertions...
I'm facing an odd problem...
Sometimes, when I insert a single record into a table, it turns out that
multiple equal records get inserted.
This has already produced up to 27 records in a 3 seconds time and up to 12 in
one single second! The number of "copies" is random. It can go from 2 to 27, as
mentioned before.
I simply can't understand how this happens as there is absolutely no loop in
my code.
Also, it only happens in one table whose definition is further below.
Has anyone come across such a situation too?
About the system:
CF Version: MX 6,1,0,63958 Standard Edition
Operating System: UNIX (Linux)
OS Version: 2.4.20-20.8smp
Java version: 1.4.2
Java VM Specification Version: 1.0
Java VM Version: 1.4.2-b28
Java VM Arguments: -server -Dsun.io.useCanonCaches=false -XX:MaxPermSize=128m
-XX:+UseParallelGC
Java Specification Version: 1.4
Java Class Version: 48.0
About the database/datasource:
MySQL 3.23.56
Driver: the one included with CFMX 6.1
About the table:
Type: MyISAM
CREATE TABLE `TB_Membros` (
`Memb_ID` mediumint(20) NOT NULL auto_increment,
`Memb_Utilizador` varchar(60) NOT NULL default '',
`Memb_Senha` varchar(50) NOT NULL default '',
`Memb_Nome` varchar(150) NOT NULL default '',
`Memb_Email` varchar(60) default NULL,
`Memb_Telefone1` varchar(12) NOT NULL default '',
`Memb_Telefone2` varchar(12) default NULL,
`Memb_Fax` varchar(12) default NULL,
`Memb_DataAdesao` datetime NOT NULL default '0000-00-00 00:00:00',
`Memb_EmailHTML` tinyint(4) NOT NULL default '1',
`Memb_Morada` varchar(150) NOT NULL default '',
`Memb_CPostal1` varchar(4) NOT NULL default '',
`Memb_CPostal2` char(3) default NULL,
`Memb_CPostal` varchar(10) NOT NULL default '',
`Memb_Localidade` varchar(150) NOT NULL default '',
`Memb_Contribuinte` varchar(15) NOT NULL default '',
`Memb_AceitaPublicidade` tinyint(4) NOT NULL default '0',
`Memb_Creditos` mediumint(6) NOT NULL default '0',
`Memb_UltimoLogin` datetime default NULL,
`Memb_FimBloqueio` datetime default NULL,
`Memb_Activo` tinyint(4) NOT NULL default '1',
`Memb_Provisorio` tinyint(4) NOT NULL default '0',
`Memb_URL` varchar(150) NOT NULL default '',
`Memb_Logotipo` varchar(100) NOT NULL default '',
`Memb_Modulo` varchar(150) NOT NULL default '',
`MeTi_ID` tinyint(4) NOT NULL default '1',
`Memb_AnunciosPossiveis` smallint(4) NOT NULL default '1000',
`Memb_PeriodoAnuncios_Inicio` date NOT NULL default '0000-00-00',
`Memb_PeriodoAnuncios_Fim` date NOT NULL default '0000-00-00',
`Pais_ID` smallint(6) NOT NULL default '1',
`Memb_IPRegisto` varchar(15) default NULL,
`Memb_URLReferencia` varchar(255) NOT NULL default '',
PRIMARY KEY (`Memb_ID`),
UNIQUE KEY `Memb_ID` (`Memb_ID`),
KEY `Memb_ID_2` (`Memb_ID`),
KEY `Pais_ID` (`Pais_ID`)
) TYPE=MyISAM COMMENT='Membros' AUTO_INCREMENT=1 ;
lx_xpto Guest
-
Acrobat 6.01: File Command disappears on Command Bar
On the Command Bar (File, Edit, View, etc.) the File Command disappears in many Acrobat operations. Is there a parameter available to insure that... -
RUN/execute a Command-Line command from an ASP page
Hi, I need to RUN/execute a Command-Line command from an ASP page. This is the command: sse45.exe -i k:\o\2.wmv -o k:\o\2.shh -w 128 -df 0 -m 2... -
RUN/execute a Command-Line command from an ASP page.
Hi, I need to RUN/execute a Command-Line command from an ASP page. This is the command: sse45.exe -i k:\o\2.wmv -o k:\o\2.shh -w 128 -df 0 -m 2... -
Windows Explorer Right Click Command (+ Custom Command Script)
Ok got a tricky question about custom scripts, I would like to add a Windows Explorer Right Click Command - that allows me to select an image/s... -
Multi command files and running them from the command prompt
Use the -td§ option . Details are in the section titled Command Line Processor Options in the Command Reference. "Derek Clarkson"... -
jdeline #2
Re: One command, too much insertions...
Could you post the code around your insert statement?
jdeline Guest
-
lx_xpto #3
Re: One command, too much insertions...
Here goes the code. Basically, if I get a variable telling me to create a
record (VARIABLES.CriarRegisto), I do it.
First, I pick up a new password (Method: CriarSenhaUtilizador), then, there
are two ways you can go. You either make a
quick registration (ARGUMENTS.RegistoRapido) or you do the full one. In the
end, I send an email to the new member.
Hope the code is explicit enough. The lines before the ones I send do a table
check to see if the email is already in the database.
The record is created only if the email is a new one. Otherwise, an Update is
done.
<CFIF VARIABLES.CriarRegisto>
<CFTRY>
<CFIF NOT Len(ARGUMENTS.Memb_Senha)>
<CFINVOKE COMPONENT="#PastaComponentes#.utilizadores"
METHOD="CriarSenhaUtilizador" RETURNVARIABLE="VARIABLES.Memb_Senha"
UtilizadorSistema ="#ARGUMENTS.UtilizadorSistema#"
DataSource ="#ARGUMENTS.DataSource#"/>
<CFELSE>
<CFSET VARIABLES.Memb_Senha=ARGUMENTS.Memb_Senha>
</CFIF>
<!--- Insere o registo --->
<CFIF ARGUMENTS.RegistoRapido>
<CFQUERY NAME=InserirRegisto DATASOURCE="#ARGUMENTS.DataSource#">
INSERT INTO TB_Membros
(Memb_Utilizador,Memb_Senha,Memb_Email,Memb_DataAd esao,Memb_Provisorio,Memb_IPRe
gisto)
VALUES (
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Utilizador#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="60">,
<CFQUERYPARAM VALUE="#LCase(Hash(VARIABLES.Memb_Senha))#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="50">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Email#" CFSQLType="CF_SQL_VARCHAR"
MAXLENGTH="60">,
#Now()#,
0,
<CFQUERYPARAM VALUE="#CGI.REMOTE_ADDR#" CFSQLType="CF_SQL_VARCHAR"
MAXLENGTH="15">
)
</CFQUERY>
<CFELSE>
<CFQUERY NAME=InserirRegisto DATASOURCE="#ARGUMENTS.DataSource#">
INSERT INTO TB_Membros (
Memb_Utilizador,Memb_Senha,Memb_Nome,Memb_Email,
Memb_Telefone1,Memb_Telefone2,Memb_Fax,
Memb_DataAdesao,Memb_EmailHTML,
Memb_Morada,Memb_Localidade,
Memb_CPostal,
Memb_Contribuinte,Memb_AceitaPublicidade,Memb_Cred itos,
Memb_Activo,Memb_Provisorio,
Memb_URL,Memb_Logotipo,Memb_Modulo,MeTi_ID,
Memb_AnunciosPossiveis
<CFIF IsDefined("ARGUMENTS.Memb_PeriodoAnunciosInicio")>
,ARGUMENTS.Memb_PeriodoAnunciosInicio
</CFIF>
<CFIF IsDefined("ARGUMENTS.Memb_PeriodoAnunciosFim")>
,ARGUMENTS.Memb_PeriodoAnunciosFim
</CFIF>
,Pais_ID
,Memb_IPRegisto
,Memb_URLReferencia
)
VALUES (
<CFIF ARGUMENTS.Memb_Provisorio>
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Utilizador#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="60">,
<CFQUERYPARAM VALUE="#LCase(Hash(VARIABLES.Memb_Senha))#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="50">,
'',
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Email#" CFSQLType="CF_SQL_VARCHAR"
MAXLENGTH="60">,
'','','',
#Now()#,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_EmailHTML#"
CFSQLType="CF_SQL_TINYINT">,
'','',
'',
'',
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_AceitaPublicidade#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Creditos#"
CFSQLType="CF_SQL_INTEGER">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Activo#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Provisorio#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_URL)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Logotipo)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="100">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Modulo)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#ARGUMENTS.MeTi_ID#" CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_AnunciosPossiveis#"
CFSQLType="CF_SQL_SMALLINT">
<CFELSE>
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Utilizador)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="60">,
<CFQUERYPARAM VALUE="#LCase(Hash(VARIABLES.Memb_Senha))#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="50">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Nome)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Email)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="60">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Telefone1)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="12">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Telefone2)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="12">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Fax)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="12">,
#Now()#,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_EmailHTML#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Morada)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Localidade)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_CPostal)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="10">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Contribuinte)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="15">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_AceitaPublicidade#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Creditos#"
CFSQLType="CF_SQL_INTEGER">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Activo#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_Provisorio#"
CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_URL)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Logotipo)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="100">,
<CFQUERYPARAM VALUE="#Trim(ARGUMENTS.Memb_Modulo)#"
CFSQLType="CF_SQL_VARCHAR" MAXLENGTH="150">,
<CFQUERYPARAM VALUE="#ARGUMENTS.MeTi_ID#" CFSQLType="CF_SQL_TINYINT">,
<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_AnunciosPossiveis#"
CFSQLType="CF_SQL_SMALLINT">
</CFIF>
<CFIF IsDefined("ARGUMENTS.Memb_PeriodoAnunciosInicio")>
,<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_PeriodoAnunciosInicio#"
CFSQLType="CF_SQL_DATE">
</CFIF>
<CFIF IsDefined("ARGUMENTS.Memb_PeriodoAnunciosFim")>
,<CFQUERYPARAM VALUE="#ARGUMENTS.Memb_PeriodoAnunciosFim#"
CFSQLType="CF_SQL_DATE">
</CFIF>
,<CFQUERYPARAM VALUE="#ARGUMENTS.Pais_ID#" CFSQLType="CF_SQL_SMALLINT">
,<CFQUERYPARAM VALUE="#CGI.REMOTE_ADDR#" CFSQLType="CF_SQL_VARCHAR"
MAXLENGTH="15">
,'#CGI.HTTP_REFERER#'
)
</CFQUERY>
</CFIF>
<!--- L? o novo ID --->
<CFQUERY NAME=LerID DATASOURCE="#ARGUMENTS.DataSource#">
SELECT Memb_ID,Memb_Utilizador
FROM TB_Membros
ORDER BY Memb_ID DESC
LIMIT 0,1
</CFQUERY>
<CFSET Funcao.Erro=0>
<CFSET Funcao.Mensagem="Registo criado.<BR>">
<CFSET
Funcao.Resultado="#LerID.Memb_ID#,#VARIABLES.Memb_ Senha#,#LerID.Memb_Utilizador#
">
<CFCATCH TYPE="any">
<CFSET Funcao.Erro=1>
<CFSET Funcao.Mensagem="O registo n?o foi criado.<BR>">
</CFCATCH>
</CFTRY>
<!--- Envia uma mensagem ao membro --->
<CFIF Len(ARGUMENTS.Memb_Email) AND IsNumeric(LerID.Memb_ID) AND
ARGUMENTS.EnviarMensagem>
<CFINVOKE COMPONENT="#Componente#" METHOD="EnviarMensagemDadosMembros"
RETURNVARIABLE="MensagemDadosMembro"
Titulo ="Inscri??o como Utilizador"
Mensagem ="Agradecemos a sua inscri??o como Utilizador."
Memb_Utilizador ="#ARGUMENTS.Memb_Utilizador#"
Memb_Senha ="#VARIABLES.Memb_Senha#"
Memb_Nome ="#ARGUMENTS.Memb_Nome#"
Memb_Email ="#ARGUMENTS.Memb_Email#"
Memb_EmailHTML ="#ARGUMENTS.Memb_EmailHTML#"/>
</CFIF>
lx_xpto Guest



Reply With Quote

