Hi,
I have a query which updates the projects table of my database, however when I try to run my query with blank values i get the following error: - Data truncation: Data truncated for column 'date' at row 1
I have done some researching and I believe the problem is to do with the data that is being sent by my cfqueryparam function.
Here is my create function: -
<cffunction name="create" access="public" output="false" returntype="struct" hint="CRUD Method">
-
<!--- arguments for the constructor, all of which are optional (no-arg constructor) --->
-
<cfargument name="dsn" displayName="dsn" type="string" hint="Datasource name"
-
required="true" default="" />
-
<cfargument name="id" displayName="id" type="string" hint="The project ID (UUID)"
-
required="true" default="0" />
-
<cfargument name="priority" displayName="priority" type="string" hint="The project priority (Sort order)"
-
required="false" default="1" />
-
<cfargument name="type" displayName="type" type="string" hint="The project type"
-
required="false" default="" />
-
<cfargument name="title" displayName="title" type="string" hint="The project title"
-
required="false" default="" />
-
<cfargument name="location" displayName="location" type="string" hint="The project location"
-
required="false" default="" />
-
<cfargument name="description" displayName="description" type="string" hint="The project description"
-
required="false" default="" />
-
<cfargument name="body" displayName="body" type="string" hint="The project body description"
-
required="false" default="" />
-
<cfargument name="image" displayName="image" type="string" hint="The project image name"
-
required="false" default="" />
-
<cfargument name="image_alt" displayName="image_alt" type="string" hint="The project image alternative text"
-
required="false" default="" />
-
<cfargument name="movie" displayName="movie" type="string" hint="The project movie"
-
required="false" default="" />
-
<cfargument name="pdf_doc" displayName="pdf_doc" type="string" hint="The project pdf reference"
-
required="false" default="" />
-
<cfargument name="word_doc" displayName="word_doc" type="string" hint="The project work doc reference"
-
required="false" default="" />
-
<cfargument name="date" displayName="date" type="string" hint="The date the project was added"
-
required="false" default="" />
-
<cfargument name="time" displayName="time" type="string" hint="The time the project was added"
-
required="false" default="" />
-
<cfargument name="archive" displayName="archive" type="string" hint="The project should be archived"
-
required="false" default="" />
-
<cfargument name="display" displayName="display" type="string" hint="The project should be shown"
-
required="false" default="" />
-
-
<!--- initialize variables --->
-
<cfset var results = StructNew() />
-
<cfset var qInsert = 0 />
-
-
<!--- defaults --->
-
<cfset results.success = true />
-
<cfset results.message = "The project was inserted successfully." />
-
-
<!--- <cftry> --->
-
<cftransaction>
-
<cfquery name="qInsert" datasource="#arguments.dsn#">
-
INSERT INTO
-
projects
-
(
-
id,
-
priority,
-
type,
-
title,
-
location,
-
description,
-
body,
-
image,
-
image_alt,
-
movie,
-
pdf_doc,
-
word_doc,
-
date,
-
time,
-
archive,
-
display
-
)
-
VALUES
-
(
-
<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.id#" null="yes" />,
-
<cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.priority#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.type#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.title#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.location#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.description#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.body#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.image#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.image_alt#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.movie#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.pdf_doc#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.word_doc#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.date#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.time#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.archive#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.display#" />
-
)
-
</cfquery>
-
-
<!--- Select insert id --->
-
<cfquery name="qMaxID" datasource="#arguments.dsn#">
-
SELECT max( id ) AS maxID FROM projects
-
</cfquery>
-
-
<!--- Add last insert id to results --->
-
<cfset results.lastInsertID = StructFind(qMaxID,"maxID") />
-
-
</cftransaction>
-
<!---
-
<cfcatch type="database">
-
<cfset results.success = false />
-
<cfset results.message = "An error occured whilst attempting to update the database, please check you have filled in all the fields correctly and try again." />
-
<cfif cfcatch.detail NEQ "">
-
<cfset results.message = results.message & "Error details: <br />" & cfcatch.detail />
-
</cfif>
-
</cfcatch>
-
</cftry> --->
-
-
<!--- return the struct --->
-
<cfreturn StructCopy(results) />
-
</cffunction>
-
As you can see i am just using the cf_sql_varchar cfsqltype, as I'm not sure which is best suited.
I have tryed running the following test query which works fine: -
INSERT INTO
-
projects
-
(
-
id,
-
priority,
-
type,
-
title,
-
location,
-
description,
-
body,
-
image,
-
image_alt,
-
movie,
-
pdf_doc,
-
word_doc,
-
date,
-
time,
-
archive,
-
display
-
)
-
VALUES
-
(
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
'',
-
''
-
)
-
The cfqueryparam function must be doing something and I don't know what.
Does anyone know what the problem is?
Thanks,
chromis
Then use CF_SQL_DATE for the cfsqltype.
13 32641
What's the format/data type of the date field?
What's the format/data type of the date field?
The date field in the db is date.
Then use CF_SQL_DATE for the cfsqltype.
Ok thanks that sorted the date error, but I'm getting a new error with my time argument, the cfqueryparam for that is <cfqueryparam cfsqltype="cf_sql_time" value="#arguments.time#" /> and the data type is time in the db.
Error:
The cause of this output exception was that: java.lang.NullPointerException.
So the database is getting a null value? I've enabled null for the time field in the db, but still the same problem. Any ideas?
Check the docs for the cfqueryparam tag ( link for CF8) and match the cfsqltype with the ones in your database.
Hmm, I've read through those, but still struggling, here are my mappings: - CREATE TABLE IF NOT EXISTS `projects` (
-
`id` int(11) NOT NULL auto_increment,
-
`priority` tinyint(4) NOT NULL default '0',
-
`type` varchar(12) NOT NULL default '',
-
`title` text NOT NULL,
-
`location` varchar(64) NOT NULL default '',
-
`description` text NOT NULL,
-
`body` longtext NOT NULL,
-
`image` varchar(128) NOT NULL default '',
-
`image_alt` varchar(128) NOT NULL default '',
-
`movie` varchar(128) NOT NULL default '',
-
`pdf_doc` varchar(128) NOT NULL default '',
-
`word_doc` varchar(128) NOT NULL default '',
-
`date` date default '0000-00-00',
-
`time` time default '00:00:00',
-
`archive` tinyint(1) NOT NULL default '0',
-
`display` tinyint(1) NOT NULL default '1',
-
PRIMARY KEY (`id`)
-
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=24 ;
-
- <cfqueryparam cfsqltype="cf_sql_integer" value="#arguments.id#" null="yes" />,
-
<cfqueryparam cfsqltype="cf_sql_tinyint" value="#arguments.priority#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.type#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.title#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.location#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.description#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.body#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.image#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.image_alt#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.movie#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.pdf_doc#" />,
-
<cfqueryparam cfsqltype="cf_sql_varchar" value="#arguments.word_doc#" />,
-
<cfqueryparam cfsqltype="cf_sql_date" value="#arguments.date#" />,
-
<cfqueryparam cfsqltype="cf_sql_time" value="#arguments.time#" />,
-
<cfqueryparam cfsqltype="cf_sql_tinyint" value="#arguments.archive#" />,
-
<cfqueryparam cfsqltype="cf_sql_tinyint" value="#arguments.display#" />
Is there anything wrong in the above?
I'm getting this error now: Invalid data for CFSQLTYPE CF_SQL_TINYINT.
Where you have blank values and default ones and not strings, e.g. integers, date, time, etc., use NULL, i.e. null="yes".
Ah great that's working now, thanks again acoder!
No problem at all. You're welcome :)
Hi,
<cfqueryparam cfsqltype="cf_sql_tinyint" value="#arguments.display#" />
Is producing the following error:
Invalid data for CFSQLTYPE CF_SQL_INTEGER.
It's moaning because I have removed the null="yes" setting in the cfqueryparam but unfortunately it enters NULL into the database when the setting is true, regardless of the contents of the variable. So having removed it I am left with this problem, how do I keep MySQL happy?
Thanks.
Are you passing a blank string? For non-string fields, set a default value instead, e.g. 0.
Yes I am already doing that which is strange. -
<cfargument name="archive" displayName="archive" type="string" hint="The project should be archived"
-
required="false" default="0" />
-
<cfargument name="display" displayName="display" type="string" hint="The project should be shown"
-
required="false" default="1" />
-
I've done some reading and come across a post which talks about using the Val function like so: -
<cfqueryparam cfsqltype="cf_sql_tinyint" value="#Val(arguments.display)#" />
-
This seems to keep MySQL happy as it ensures the value is an integer, although I was passing it an integer anyway...
It's fixed now at least, thanks again for your help.
Yes, that's correct. I forgot about Val. The defaults are strings, so using val should solve the problem.
Sign in to post your reply or Sign up for a free account.
Similar topics
by: Arabian143 |
last post by:
Hey everyone ..
i have a website going .. .. ofcourse you use the Ws-FTP to upload the
photos to the page .. and i have to use SQL program to insert the file
names and values into the...
|
by: RDRaider |
last post by:
How can I find which record(s) cause this error:
Server: Msg 8152, Level 16, State 9, Line 1
String or binary data would be truncated.
The statement has been terminated.
I have tried Profiler...
|
by: Bernie Yaeger |
last post by:
What causes the error 'string or binary data would be truncated'? Here's
the routine that sometimes causes the error, sometimes not:
irow("ctotal") = FormatCurrency(irow("total"), 2,...
|
by: languy |
last post by:
Hi there
I'm having a problem when using the SqlDataAdapter. When calling the
Update(DataSet, string) method I get the following error message "String or
binary data would be truncated". The...
|
by: dileepkumar |
last post by:
I'm trying to save file data to sqlserver. file data is converted to sysyte.io.stream and passed through webservice and in Business layer i changed the stream to byte array and passed it as a...
|
by: Coldfire |
last post by:
i am having error ....details are
ASP.Net application...in which I have a textbox
<asp:TextBox ID="Other" TextMode=SingleLine CssClass="serviceBox" Width="250" Height="45" Runat="server"...
|
by: Juan Carlos Espinoza |
last post by:
i have a problem
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data truncated for column 'FGiroNPagDol' at row 1
at...
|
by: sunkesula |
last post by:
I update a field in the database that gives the last update time.
The first time I edit the item it puts a value in this field.
The second time the applications fails with The statement has...
|
by: david |
last post by:
I've noticed that the following compiles (as C) under both VS8 and gcc
with no warnings, even though there's a possibility of data truncation
from enum to unsigned char. It does generate a warning...
|
by: CloudSolutions |
last post by:
Introduction:
For many beginners and individual users, requiring a credit card and email registration may pose a barrier when starting to use cloud servers. However, some cloud server providers now...
|
by: Faith0G |
last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
|
by: taylorcarr |
last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
|
by: Charles Arthur |
last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: BarryA |
last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
| |