MySQL Community Server License?

I know you guys aren’t lawyers but I was just curious if anyone here could answer my question. If I want to use the MySQL Community Server in a Xojo program that I intend to sell do I need an enterprise license? I would just be including the MySQL Community Server plugin that came with Xojo in with my libraries so that I can connect remotely to a MySQL database on a web server. Does anyone know the rules on this usage? Thanks!

I am NOT a lawyer.

but from what I understand, if you are using MySQL in a commercial product/offering, you need a commercial/enterprise license for it.

PostgreSQL doesn’t have this issue. It is free for OSS & commercial software.

but DO NOT take my word for this. Speak to a lawyer that specializes in Computer Contracts/EULAs.

I think it comes down to if your program is “dependent” on mysql then the licensing may affect you
MariaDB has the same issues
And its not necessarily YOU that needs to include the license but the end user of your software - they may already have one

Personally I avoid 100% of this ambiguity & use PostgreSQL which has an unambiguous “free for any use” license

Permission to use, copy, modify, and distribute this software and its documentation for any purpose, without fee, and without a written agreement is hereby granted, provided that the above copyright notice and this paragraph and the following two paragraphs appear in all copies.

Thank you both that does clarify this issue quite a bit for me!

Unfortunately the dual license that MySQL & Maria have DOES confuse the heck out of things

PostgreSQL’s clear licensing makes it a dead easy choice on that basis alone

I also think it’s a better db engine anyways.
It used to be the case that it was MUCH more difficult to install than mySQL.
The Enterprise DB guys have really done PosgreSQL a world of good in pushing it to be easy to install & use and their support & additions to it really have made PostgreSQL a really simple choice now.

To add Norman info:

I’ve made up a layer class for all my I/O stuff. A function named .CreateDatabaseProvider(param) as Database gets the Provider and another function .SQL makes all queries. There are a lot more functions and methods but I guess you get the picture. With this I can switch easily between different DMBS like mySQL, SQLlite and ODBC on the fly leaving the rest of my app untouched (as far as I am not using any DB specific SQL syntax).

Don’t hassle with license questions. Give your customers the free choice of their DBMS. As far as you distribute your software without any MySQL Server on same medium you are clear of any legal claims.

[code]function CreateDatabaseProvider(param as String) as Database

#pragma BackgroundTasks false
dim db as Database

try

select case param.Uppercase
  
case "ODBC"
  
  dim dbODBC as new ODBCDatabase
  dbODBC.DataSource = self.DBNAME
  dbODBC.UserName = self.DBUSER
  dbODBC.Password = self.DBPASSWORD
  db = dbODBC
  
case "MySQL"
  
  dim dbMySQL as new MySQLCommunityServer
  dbMySQL.host = self.DBHOST
  dbMySQL.port = self.DBPORT
  dbMySQL.databaseName = self.DBNAME
  dbMySQL.userName = self.DBUSER
  dbMySQL.Password = self.DBPASSWORD
  db = dbMySQL
  
case "SQLlite"
  
  dim dbSQLLite as new SQLiteDatabase
  dim FI as new FolderItem
  
  FI = SpecialFolder.ApplicationData.Child("jakobssystems").Child(self.LOCAL_DBNAME)
  
  if FI <> nil then
    
    if FI.Exists then
      
      dbSQLLite.DatabaseFile = FI
      dbSQLLite.MultiUser = true
      db = dbSQLLite
      
    end if

end select

catch err as NilObjectException

Finally

end try

#pragma BackgroundTasks true

return db

return

end function[/code]

[code]function SQL(CustomSQL as String) as REcordSet

#pragma BackgroundTasks false

if CustomSQL <> “” then

dim db as Database
dim rs as RecordSet

db = self.CreateDatabaseProvider

try
  
  If db.Connect then
    
    rs = db.SQLSelect(CustomSQL)
    
  else
    
    rs = nil
    
  end if
  
catch err as NilObjectException
  
Finally
  
end try

return rs

end if

#pragma BackgroundTasks true

end function[/code]

Well, for me I can simply configure SQLDatabaseMBS class to have libraries for mysql, postgre SQL, ODBC and Microsoft ready and offer user a dialog to enter his login for database. Once class to handle them all.

Just to add if you’re working on a Mac the Postgresql App makes for a very easy install.