On 12/21/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>
>
> Nathan Gross <[EMAIL PROTECTED]> wrote on 12/21/2005 11:20:50 AM:
>
>
>  > On 12/20/05, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
>  > > Nathan Gross <[EMAIL PROTECTED]> wrote on 12/20/2005 05:34:58 PM:
>  > >
>  > >  > Hi;
>  > >  > [Mysql 4x] In a table where I get data from another program, I have
>  > >  > many records (about 1000) that have illegal chars in a [unique]
>  > >  > indexed varchar field. I would like to clean the illegal characters
>  > >  > out and leave the rest of the data intact.
>  > >  > 1. Is there a utility to do this?
>  > >  > 1b) Or an UPDATE command?
>  > >  >
>  > >  > Problem is that I do not even know which characters are illegal.
>  > >  > For the future, I can have my Java program check before the inserts.
>  > >  >
>  > >  > 2. What are the illegal characters?
>  > >  >
>  > >  > Thank you.
>  > >  > -nat
>  > >  >
>  > >
>  > > If you don't know what is illegal, how do you know you have illegal
>  > > characters? Are you getting some kind of error message or warning? You
> have
>  > > to give us the same information you have in order for us to make an
> informed
>  > > decision.
>  > I get two lists from different sources which I merge into the database
>  > via a Java program. Since these two lists themselves sometimes get
>  > their data from the same source, my program first does a SELECT on the
>  > varchar field (unique index) [to ensure that this data is not yet in
>  > the db] before inserting the data. (Actually I am using j2ee
>  > ejbFinds.)
>  > Occasionaly, say 5% of the time, I get a duplicate (create) exception
>  > from the db, even though the db just told my program that the data was
>  > not there!
>  > With my debugger I verified that for these fields, if you try to
>  > find/select this data, mysql will return a null resultset, but yet if
>  > you try to enter this data it will throw the create exception.
>  > Now these [defective] fields always have (1 or more) suspicious
>  > characters like {,[,',", or commas colons, what not. I do not know
>  > which of these is/are the culprits.
>  > So, my little problem is twofold.
>  > 1) How to trap this data in the first place in my Java program.
>  > Obviously I need to know what to look for!
>  > 2) I do not want to leave my database in this state, so I want to clean
> it.
>  > 2b)I don't mind adding a boolean field to the table to be used as a
>  > flag for all records that have suspect data, before deciding exactly
>  > how to clean it. Although I think I can just replace these characters
>  > with a space, in [almost] all cases.
>  >
>  > One more important point. This field, although unique, is NOT the pk.
>  > I can use the PK to correctly select and display the contents of all
>  > fields in the record.
>  >
>  > Thank you much.
>  > -nat
>
> I believe that what you are describing is the inability to properly escape a
> query string in order to make an appropriate match. Please look at this page
> for how to escape your incoming data properly so that you can probably avoid
> the problems you describe.
>
> http://dev.mysql.com/doc/refman/4.1/en/string-syntax.html
Does this mean that any character NOT on that page is legal? Like a
brace {} or brackets[]?

> Nearly every mysql client library has some kind of function to perform this
> escaping for you. Please refer to the manual of the client library you are
> using to see if your client has it or if it escapes content as part of the
> execution of certain methods or calls.
I use Java. I don't know where to look for such a function.
Thank you.
-nat

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to