[ 
https://issues.apache.org/jira/browse/NUTCH-1481?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13484927#comment-13484927
 ] 

Arni Sumarlidason commented on NUTCH-1481:
------------------------------------------

I was going to post a work around, but haven't decided where. I actually 
modified 
gora-sql-0.1.1-incubating.jar::org.apache.gora.sql.store.SqlStore.flush() to be 
"less sensitive" to failures. I logged all the URLS that were skipped, around 
0.0003% of 150,000 so far, some what insignificant. However, I think if users 
are going to use less than 4b/character for their 'id' field I don't think the 
job should fail.

I haven't been able to spend a ton of time familiarizing myself with the nutch 
source, but it may be possible to add a parameter to webpage that is a hash of 
the key and setting it to unique in the database. Then we can remove the 
primary key constraint from ID and use a utf8mb4 character set with a good 
length.

I am operating under the assumption that the primary key's sole purpose is to 
reject duplicates in the database.

please advise.
                
> When using MySQL as storage unicode characters within URLS cause nutch to fail
> ------------------------------------------------------------------------------
>
>                 Key: NUTCH-1481
>                 URL: https://issues.apache.org/jira/browse/NUTCH-1481
>             Project: Nutch
>          Issue Type: Bug
>          Components: crawldb
>    Affects Versions: 2.1
>         Environment: mysql 5.5.28 on centos
>            Reporter: Arni Sumarlidason
>              Labels: database, sql, unicode, utf8
>
> MySQL's (innodb) primary key / unique key is restricted to 767 bytes.. 
> currently the url of a web page is used as a primary key in nutch storage.
> when using latin1 character set on the 'id' column @ length 767 
> bytes/characters; unicode characters in urls cause jdbc to throw an exception,
> java.io.IOException: java.sql.BatchUpdateException: Incorrect string value: 
> '\xE2\x80\x8' for column 'id' at row 1
> when using utf8mb4 character set on the 'id' column @ length 190 characters / 
> 760 bytes to fully support unicode characters; the field length becomes 
> insufficient
> It may be better to use a hash of the url as the primary key instead of the 
> url itself. This would allow urls of any length and full utf8 support.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to