草庐IT

MySQL + Qt QMYSQL 插件 = 商业 MySQL 许可证?

coder 2023-10-02 原文

关闭。这个问题是off-topic .它目前不接受答案。












想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。

9年前关闭。




Improve this question




我想很多人都想知道这一点。我在网上和堆栈上搜索,而
这之前已经在堆栈上讨论过,它不是关于 Qt 的……也不是在相同的上下文中。

Qt 是 LGPL。
这意味着(只要你不修改Qt):
(1) 商业开发不需要商业许可证($)只使用 Qt。
(2) 不需要将您的应用程序 src 代码泄露给任何需要它的人。

Oracle MySQL 是 GPL。
这意味着(即使你不修改MySQL)——解读A:
(1) 商业开发需要商业许可证(最低 2000 美元/年)才能使用 MySQL。
(2) 必须将您的应用程序 src 代码提供给任何需要它的人。

这意味着(即使你不修改MySQL)——解释B:
(1) 商业开发不需要商业许可证 ($) 只使用 MySQL。
(2) 必须将您的应用程序 src 代码提供给任何需要它的人。

这意味着(只要你不修改MySQL)——解读C:
(1) 商业开发不需要商业许可证 ($) 只使用 MySQL。
(2) 不需要将您的应用程序 src 代码泄露给任何需要它的人。

虽然 LGPL 是明确的,但关于 GPL 存在很多混淆。我想知道哪个版本的 GPL 解释是正确的(A、B 或 C)。我相信这里有一些专业人士知道这一点。

我个人对 GPL 的理解是 GPL 是针对库链接(代码重用……而不是应用程序使用)编写的。也就是说,如果你使用一些代码,或者你扩展一些代码来制作一个应用程序,你的权利/限制和其他人的权利是什么。我不相信 GPL 是指限制您对 GPL 应用程序的使用。如果我错了,请纠正我。

例如,大多数 LINUX 是 GPL。如果我在 Linux 上进行开发,我的所有应用程序都必须是 GPL 吗?我认为这样的解释是不准确的。所以我认为使用 GPL 应用程序和使用/重用 GPL src 代码是有区别的。

通过以上示例的扩展,如果我使用名为 MySQL 的应用程序......为什么 MySQL 的 GPL 许可证会感染我编写的任何应用程序,因为它使用 MySQL 数据库来存储和检索数据?这和用Linux开发有什么区别?

现在,进入我的困惑点,以及帖子的内容。在回答我的最后一个问题时,我看到了一些令人困惑的说法,即链接到 MySQL 数据库的重要性。我不明白这个...虽然我认为一般的想法是用于链接到 MySQL 的 API 也可能是 GPL。与其涵盖每个场景,不如让我们针对 API。

我在 Qt 中使用了什么库?我正在按照 Qt 说明构建 QMYSQL(MySQL 驱动程序)。 http://doc.qt.nokia.com/latest/sql-driver.html这个构建过程依赖于 MySQL 提供的一些文件(可能是 GPL)。我不知道 Qt 使用术语“驱动程序”在什么意义上。从我的角度来看,“驱动程序”是一个底层引擎,它允许某些东西工作,因此除了在 LINUX 中安装一些 GPL 驱动程序外,我看不出它与我的应用程序有什么关系,这样我就可以启动 LINUX 并执行一些操作商业编码。我也不明白为什么Qt让人们“构建”QMYSQL插件。是技术原因还是许可证原因?为了控制 MySQL,我使用 Qt“QSqlDatabase”和“QSqlQuery”类。

因此,如果我 --USE-- MySQL 用于数据存储并且我的商业应用程序使用 Qt 来管理、存储、检索、更新我的 MySQL 数据库中的数据,那么上述 GPL 许可解释中的哪一个是正确的(A、B 或C)?

*最后说明。我知道人们将 MySQL 与网站联系起来。让我们在本主题的上下文中认为 MySQL 也适用于业务应用程序……而不仅仅是网站。两者之间的主要区别在于网站需要一个中央数据库,而业务应用程序可能需要每个客户都有自己的数据库部署。归根结底,它只是存储数据(无论哪种方式)。据我所知,将 MySQL 包含在与商业闭源应用程序相同的安装光盘上并不违反 GPL,让安装程序安装它,然后闭源应用程序制作数据库和表。如果我错了纠正我。 .

最佳答案

免责声明:我是 不是 律师!

我的理解是,一旦使用 MySQL 分发您的应用程序,您就必须支付许可证费用。

如果您不分发您的应用程序,但仍然需要 MySQL(并且不会与任何其他 DBMS 一起运行),您还需要一个许可证(但在这里我已经不太确定了)。

所有这些不确定性让我避免在商业环境中使用 GPL(甚至 LGPL)许可的任何软件。

幸运的是,还有其他同样好(甚至更好)的 DBMS 拥有更自由的许可证。

关于MySQL + Qt QMYSQL 插件 = 商业 MySQL 许可证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5423874/

有关MySQL + Qt QMYSQL 插件 = 商业 MySQL 许可证?的更多相关文章

  1. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  2. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  3. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  4. ruby - 使用 `+=` 和 `send` 方法 - 2

    如何将send与+=一起使用?a=20;a.send"+=",10undefinedmethod`+='for20:Fixnuma=20;a+=10=>30 最佳答案 恐怕你不能。+=不是方法,而是语法糖。参见http://www.ruby-doc.org/docs/ProgrammingRuby/html/tut_expressions.html它说Incommonwithmanyotherlanguages,Rubyhasasyntacticshortcut:a=a+2maybewrittenasa+=2.你能做的最好的事情是:

  5. 使用canal同步MySQL数据到ES - 2

    文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co

  6. ruby - 如何计算 Liquid 中的变量 +1 - 2

    我对如何计算通过{%assignvar=0%}赋值的变量加一完全感到困惑。这应该是最简单的任务。到目前为止,这是我尝试过的:{%assignamount=0%}{%forvariantinproduct.variants%}{%assignamount=amount+1%}{%endfor%}Amount:{{amount}}结果总是0。也许我忽略了一些明显的东西。也许有更好的方法。我想要存档的只是获取运行的迭代次数。 最佳答案 因为{{incrementamount}}将输出您的变量值并且不会影响{%assign%}定义的变量,我

  7. ruby-on-rails - 您希望看到哪些 Rails 插件? - 2

    您认为可以作为插件很好地存在于您的Rails应用程序中必须实现的哪些行为?您过去曾搜索过哪些插件功能但找不到?哪些现有的Rails插件可以改进或扩展,如何改进或扩展? 最佳答案 我希望在管理界面中看到一个引擎插件,它提供了应用程序中所有模型的仪表板摘要,以及可配置的事件图表。 关于ruby-on-rails-您希望看到哪些Rails插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

  8. ruby-on-rails - 无法安装 mysql2 0.3.14 gem - 2

    我看到其他人也遇到过类似的问题,但没有一个解决方案对我有用。0.3.14gem与其他gem文件一起存在。我已经完全按照此处指示完成了所有操作:https://github.com/brianmario/mysql2.我仍然得到以下信息。我不知道为什么安装程序指示它找不到include目录,因为我已经检查过它存在。thread.h文件存在,但不在ruby​​目录中。相反,它在这里:C:\RailsInstaller\DevKit\lib\perl5\5.8\msys\CORE\我正在运行Windows7并尝试在Aptana3中构建我的Rails项目。我的Ruby是1.9.3。$gemin

  9. arrays - Ruby 数组 += vs 推送 - 2

    我有一个数组数组,想将元素附加到子数组。+=做我想做的,但我想了解为什么push不做。我期望的行为(并与+=一起工作):b=Array.new(3,[])b[0]+=["apple"]b[1]+=["orange"]b[2]+=["frog"]b=>[["苹果"],["橙子"],["Frog"]]通过推送,我将推送的元素附加到每个子数组(为什么?):a=Array.new(3,[])a[0].push("apple")a[1].push("orange")a[2].push("frog")a=>[[“苹果”、“橙子”、“Frog”]、[“苹果”、“橙子”、“Frog”]、[“苹果”、“

  10. ruby - 如何使用 ruby​​ mysql2 执行事务 - 2

    我已经开始使用mysql2gem。我试图弄清楚一些基本的事情——其中之一是如何明确地执行事务(对于批处理操作,比如多个INSERT/UPDATE查询)。在旧的ruby-mysql中,这是我的方法:client=Mysql.real_connect(...)inserts=["INSERTINTO...","UPDATE..WHEREid=..",#etc]client.autocommit(false)inserts.eachdo|ins|beginclient.query(ins)rescue#handleerrorsorabortentirelyendendclient.commi

随机推荐