Giorgi / DuckDB.NET

Bindings and ADO.NET Provider for DuckDB
https://duckdb.net
MIT License
356 stars 62 forks source link

DuckDb.Open failed but reason not reported #30

Closed pkese closed 2 years ago

pkese commented 2 years ago

I'm getting an exception that DuckDBConnection.Open() failed but exception does not contain a reason of why it failed.

DuckDBOpen failed
Unhandled exception. DuckDB.NET.Data.DuckDBException (0x00000001): DuckDBOpen failed
   at DuckDB.NET.Data.DuckDBConnection.Open()

It would be great to use https://duckdb.org/docs/api/c/connect#duckdb_open_ext and include the **out_err string inside exception message.

Giorgi commented 2 years ago

Which version of duckdb.dll are you using?

pkese commented 2 years ago

Oh, I see.
I should probably use 0.3.1 or compile the DuckDb myself with DUCKDB_API_VERSION < DUCKDB_API_0_3_2

Still it would be nice if the dotnet adapter at least complained about it.

It would be even nicer if dotnet adapter brought with itself it's own matching build of DuckDb (like Microsoft.Data.Sqlite).

Giorgi commented 2 years ago

If this project had the same funding as Microsoft.Data.Sqlite it would provide all those features. Until then feel free to send a PR implementing them or make a donation

pkese commented 2 years ago

It's somewhat hard to respond to this correctly.

My comment was not ill-intended or criticism. All I did was I tried to use the library for the first time and I'm having some hard time figuring out (without any documentation) that I'm supposed to provide my own build of the duckdb shared library, that the default builds available at duckdb web site doesn't work, that I'm supposed to compile my own, etc.
It is up to you do decide, if you'll take this as an actual user story feedback, or as a personal criticism.

Btw, the portable binary build of Sqlite that Microsoft.Data.Sqlite is using is a community driven open-source project which is not backed by Microsoft's money either.

In order to show respect towards your work, I've made a small donation at the suggested site.

Giorgi commented 2 years ago

First of all, thanks for the donation.

I understand that you didn't expect to have to compile the duckdb native library yourself but with the duckdb team making regular changes to the library, it's hard to find time to keep up with those changes.

As a temporary workaround you can use older builds of duckdb.

pkese commented 2 years ago

And I'm sorry for my impoliteness or disrespect.

Giorgi commented 2 years ago

This should be fixed in release 0.4.0

bencevinkovics commented 1 year ago

Hello @Giorgi , hello @pkese,

I would like to use the project for my university assignment, however I repeatedly fail to find out how to install duckdb in the way, DuckDB.Net requires me to. I always get the "Unable to find an entry point named 'duckdb_open_ext' in shared library 'duckdb'." error. I found this issue which tells me that I have been trying to install duckdb completely wrong. Can any of you please point me into the right direction as to how to "compile the DuckDb myself with DUCKDB_API_VERSION < DUCKDBAPI*" ? Any help would be appreciated! Thank you very much in advance!

Giorgi commented 1 year ago

@bencevinkovics You don't need to compile anything yourself. Just get the latest version of duckdb from https://duckdb.org/

bencevinkovics commented 1 year ago

@Giorgi Thank you for the clarification! I have managed to make it work.

For anyone who is dealing with the same issue in the future: What I didn't realize was that I needed to download the C/C++ version and copy the libduck.dylib file (I'm on MacOS) into /usr/local/lib because that's where the project looks for the file.

Giorgi commented 1 year ago

It's not a requirement to copy it to /usr/local/lib. You can also put it into the root folder of your project and set 'Copy Local' to always.