问题标签 [mysql]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 您如何管理开发、测试和生产中的数据库?
我很难找到关于如何在开发、测试和生产服务器之间管理数据库模式和数据的好例子。
这是我们的设置。每个开发人员都有一个运行我们的应用程序和 MySQL 数据库的虚拟机。这是他们的个人沙盒,可以为所欲为。目前,开发人员将对 SQL 模式进行更改,并将数据库转储到他们提交到 SVN 的文本文件中。
我们希望部署一个始终运行最新提交的代码的持续集成开发服务器。如果我们现在这样做,它将为每个构建从 SVN 重新加载数据库。
我们有一个运行“候选版本”的测试(虚拟)服务器。部署到测试服务器目前是一个非常手动的过程,通常需要我从 SVN 加载最新的 SQL 并对其进行调整。另外,测试服务器上的数据不一致。您最终会得到最后一个开发人员提交的沙盒服务器上的任何测试数据。
一切都崩溃的地方是部署到生产。由于我们无法用测试数据覆盖实时数据,因此这涉及手动重新创建所有架构更改。如果有大量的模式更改或转换脚本来操作数据,这可能会变得非常棘手。
如果问题只是架构,这将是一个更容易的问题,但是数据库中还有在开发过程中更新的“基础”数据,例如安全和权限表中的元数据。
这是我在迈向持续集成和一步构建方面看到的最大障碍。你如何解决它?
一个后续问题:如何跟踪数据库版本,以便知道要运行哪些脚本来升级给定的数据库实例?标准程序下方是否有像 Lance 提到的版本表?
感谢您提到塔伦蒂诺。我不在 .NET 环境中,但我发现他们的DataBaseChangeMangement wiki 页面非常有帮助。特别是这个PowerPoint演示文稿(.ppt)
我将编写一个 Python 脚本,*.sql
根据数据库中的表检查给定目录中脚本的名称,并根据构成文件名第一部分的整数按顺序运行那些不存在的脚本。如果这是一个非常简单的解决方案,我怀疑它会是,那么我会在这里发布。
我有一个工作脚本。如果数据库不存在,它会处理初始化数据库,并根据需要运行升级脚本。还有用于擦除现有数据库和从文件导入测试数据的开关。大约有 200 行,所以我不会发布它(尽管如果有兴趣我可能会将它放在 pastebin 上)。
sql - 将 mysql 数据库转换为 sqlite 数据库的最佳方法是什么?
我目前有一个相对较小(4 或 5 个表,5000 行)的 MySQL 数据库,我想将其转换为 sqlite 数据库。由于我可能不得不不止一次地这样做,如果有人能推荐任何有用的工具,或者至少是任何易于复制的方法,我将不胜感激。
(我对所涉及的数据库/机器拥有完全的管理员访问权限。)
mysql - 从 MySQL 中的字符串中删除引号和逗号
我正在从CSV
文件中导入一些数据,以及大于1000
变成的数字1,100
等。
从中删除引号和逗号以便我可以将其放入int
字段的好方法是什么?
编辑:
数据实际上已经在 MySQL 表中,所以我需要能够使用 SQL。很抱歉混淆了。
mysql - 用于回退方案的 MySQL 复制
当我有两台 mysql 服务器有不同的作业(持有不同的数据库)但希望能够在另一台出现故障时使用其中一个来滑入,你会建议我如何让它们上的数据保持相等“关闭实时”?
显然,不可能每 x 分钟进行一次完整的数据库转储。
我已经阅读了Binary Log,这是我需要走的路吗?这不会大大降低备用服务器的速度吗?有没有办法不在二进制日志中包含一些表 - 数据已经改变并不重要?
python - Pylons 错误 - 'MySQL 服务器已消失'
我正在使用 Pylons(一个 Python 框架)来提供一个简单的 Web 应用程序,但它似乎时不时会死掉,在错误日志中会出现这样的情况:(2006, 'MySQL server has gone away')
我做了一些检查,发现这是因为与 MySQL 的连接没有被更新。不过这应该不是问题,因为sqlalchemy.pool_recycle
配置文件中的 应该自动保持它的活动状态。默认是,但由于这个问题3600
,我将其拨回。1800
它有点帮助,但根据文档3600
应该没问题。错误仍然半定期发生。我不想降低太多,但我自己的数据库是 DOS :)。
也许我的 MySQL 配置中的某些东西很愚蠢?不知道在哪里看。
其他相关细节:
mysql - MySQL 复制:如果我不指定任何数据库,log_bin 会记录所有内容吗?
我正在为运行一堆数据库(每个客户端一个)的服务器设置复制,并计划在 my.cnf 上一直添加更多数据库,而不是:
我可以拥有吗
(并且没有指定要记录的数据库)并假设记录了其他所有内容?
编辑:实际上,如果我删除所有 binlog-do-db 条目,它似乎会记录所有内容(当您移动数据库时,您会看到二进制日志文件更改位置),但在从属服务器上,什么都没有被拾取!(也许,这是使用replicate-do-db的情况?这会扼杀这个想法;我想我不能让MySQL自动检测要复制的数据库)。
mysql - MySQL 管理员备份:“兼容模式”,这到底是做什么的?
在Mysql Administrator中,做备份的时候,“兼容模式”到底是什么?
我正在尝试将webmin生成的备份与mysql administrator中可用的上传工具连接起来。我的数据已经有一些不一致的地方(我认为,记号、逗号等)我只是不会尝试解决(无论如何它们可能会在未来再次出现)。当我尝试从备份中恢复时,这些扭结会产生错误。
现在,如果我从 webmin 生成备份,然后使用 MySQL 管理员恢复它们,它们就会失败。但是,如果我使用 MySQL 管理员生成备份并勾选“兼容模式”,然后转到 MySQL 管理员(另一个实例)并恢复......它可以工作!
根据 MySQL,“兼容模式”是;
兼容模式创建与旧版本 MySQL Administrator 兼容的备份文件。
另一方面,Webmin 为我提供了以下兼容性选项:
- ANSI
- MySQL 3.2.3
- MySQL 4.0
- PostgreSQL
- 甲骨文
- 微软 SQL
- DB2
- 最大数据库
你说哪个最合适?我的数据集非常大,因此需要花费相当长的时间来逐个进行实验(特别是思考可能会击败暴力破解)。
编辑:好像它在做 ANSI,但我不是 100% 的。
mysql - MySQL 存储过程中是否有任何列表数据类型,或模拟它们的方法?
我想在 MySQL 中创建一个以列表为参数的存储过程。例如,假设我希望能够在一次调用中为一个项目设置多个标签,那么我想要做的是定义一个过程,该过程采用项目的 ID 和要设置的标签列表。但是,我似乎找不到任何方法来做到这一点,据我所知,没有列表数据类型,但是可以以某种方式模拟它吗?标签列表可以是逗号分隔的字符串,可以以某种方式拆分和循环吗?
您通常如何处理 MySQL 存储过程中的列表?
mysql - 在MySQL中选择除一列之外的所有列?
我正在尝试使用 select 语句从某个 MySQL 表中获取除一个之外的所有列。有没有一种简单的方法可以做到这一点?
编辑:此表中有 53 列(不是我的设计)
sql - 双向外连接
假设我们有一张表 A:
和表 B:
我想在 A.itemid=B.itemid 左右加入 A*B。即结果:
有没有办法在 MySQL 的一个查询中做到这一点?