[ 
https://issues.apache.org/jira/browse/DERBY-4622?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12858939#action_12858939
 ] 

Chris Dolan commented on DERBY-4622:
------------------------------------

Hmm, I didn't know about the 1-character special case.  It looks like I got 
myself in trouble by using the path part of a file:// url:

Caused by: java.sql.SQLException: Invalid value for property 
'databaseName'='/C:/AppData/local/Avid/uddi_eclipse/juddiDB/'.
        at 
org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:87)
        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:93)
        at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:179)
        at 
org.apache.derby.jdbc.EmbeddedDataSource.getConnection(EmbeddedDataSource.java:484)
        at 
org.apache.derby.jdbc.EmbeddedDataSource.getConnection(EmbeddedDataSource.java:423)
        at 
org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:69)
        at 
org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
        ... 15 more

If I massage the file:// URL into a File instance and use 
File.getAbsolutePath() which gets rid of the leading "/" then you're right and 
the code works as you have described.  So it looks like this is about 90% user 
error.  Possible code/doc changes:

 * explicitly support a new "file" sub-subprotocol in addition to the basic 
"directory", "classpath", "jar", "http", and "https"
 * add a 2-char exception for "/[a-zA-z]:"
 * add a message to the tutorial that states that the implicit default protocol 
is "directory:" and mention a few of the others

Thank you!

> Specify "database:" URL prefix in documentation
> -----------------------------------------------
>
>                 Key: DERBY-4622
>                 URL: https://issues.apache.org/jira/browse/DERBY-4622
>             Project: Derby
>          Issue Type: Bug
>          Components: Documentation
>            Reporter: Chris Dolan
>            Priority: Trivial
>
> The tutorial step titled "Activity 3: Run a JDBC program using the embedded 
> driver" at the following URL 
> (http://db.apache.org/derby/docs/10.4/getstart/getstart-single.html#tgsactivity3_Setup)
>  recommends this syntax for specifying a directory-based datasource:
>  
>   String connectionURL = "jdbc:derby:" + dbName + ";create=true";
> For Windows users who need to specify an absolute path to the database, this 
> is a problem because the connection interprets "c:/path/to/db" as 
> non-existent protocol "c" and a database name of "/path/to/db".  Better 
> documentation would be explicitly specify the protocol:
>   String connectionURL = "jdbc:derby:directory:" + dbName + ";create=true";
> (this would have saved me about a day of troubleshooting...)

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to