小编Era*_*rin的帖子

您如何对数据库模式进行版本控制?

你如何准备你的SQL增量?您是否手动将每个架构更改SQL保存到增量文件夹,或者您是否有某种自动化的差异化过程?

我对版本化数据库模式以及源代码的约定感兴趣.也许是一个预先提交的钩子来区分架构?

此外,除了DbDeploy之外还存在哪些差异增长的选项

编辑:看到答案我想澄清一点,我熟悉使用增量运行数据库迁移的标准方案.我的问题是关于自己创建增量,最好是自动创建增量.

此外,版本控制适用于PHP和MySQL,如果它有所作为.(请不要使用Ruby解决方案).

mysql sql versioning schema

125
推荐指数
1
解决办法
8万
查看次数

缩放MySQL解决方案(复制,群集)

在我正在工作的初创公司,我们正在考虑为我们的数据库扩展解决方案.事情变得有些令人困惑(至少对我来说)与MySQL,它有MySQL集群,复制MySQL集群复制(来自版本5.1.6),这是MySQL集群的异步版本.MySQL手册解释了其群集常见问题解答中的一些差异,但很难确定何时使用其中一个.

我很感激那些熟悉这些解决方案之间的差异以及优缺点的人的建议,以及何时建议使用每个解决方案.

mysql replication scaling cluster-computing database-cluster

80
推荐指数
2
解决办法
4万
查看次数

SVN结账或出口生产环境?

在我正在开发的项目中,我们在开发团队之间进行了持续的讨论 - 生产环境是作为SVN存储库的结账部署还是作为导出进行部署?

开发环境显然是一个结账,因为它不断更新.对于制作,我亲自检查主干,因为它使未来的更新更容易(只需运行svn update).然而,一些开发人员反对它,因为svn使用svn进程的组/所有者和权限创建文件(这是在Linux操作系统上,所以那些事情很重要),并且生产中的.svn目录似乎也是如此他们有点脏.

此外,如果是结帐 - 如何在不包含开发代码的情况下将单个功能推送到生产中?你是否为每个功能使用标签或分支?任何替代品?

编辑:我可能不太清楚 - 其中一个要求是能够始终能够将修复程序推送到生产环境.我们希望避免完整构建(比简单更新需要更长的时间),仅用于推送关键修复.

svn deployment

26
推荐指数
4
解决办法
2万
查看次数

处理PHP中的时区

PHP中的时区的一些问题已经在我脑海中浮现了一段时间,我想知道是否有更好的方法来处理它而不是我现在正在做的事情.

所有问题都围绕重新格式化数据库存储日期:

在处理必须支持多个时区(对于用户)的站点时,为了规范化存储时间戳的时区,我总是使用CURRENT_TIMESTAMP属性或NOW()函数将其与服务器时区一起存储.

这样我就不必考虑在输入时间戳时为PHP设置了什么时区(因为PHP时间函数是时区感知的).对于每个用户,根据他的偏好,我使用以下方法在我的引导程序文件中的某个位置设置时区:

date_default_timezone_set($timezone);
Run Code Online (Sandbox Code Playgroud)

当我想用php date()函数格式化日期时,由于MySQL目前以格式存储时间戳,因此必须进行某种形式的转换Y-m-d H:i:s.不考虑时区,你可以简单地运行:

$date = date($format,strtotime($dbTimestamp));
Run Code Online (Sandbox Code Playgroud)

这个问题是,date()并且strtotime()都是时区感知功能,这意味着如果PHP时区设置与服务器时区不同,时区偏移将应用两次(而不是我们想要的一次).

为了解决这个问题,我通常使用UNIX_TIMESTAMP()不能识别时区的函数来检索MySQL时间戳,允许我date()直接应用它 - 从而只应用一次时区偏移.

我不喜欢这种'hack',因为我不能像往常那样检索那些列,或者*用来获取所有列(有时它会极大地简化查询).此外,有时它根本不是一个使用选项UNIX_TIMESTAMP()(特别是在使用开源包时没有太多抽象的查询组合).

另一个问题是当存储时间戳时,当使用CURRENT_TIMESTAMPNOW()不是一个选项时 - 存储PHP生成的时间戳将使用我想避免的时区偏移来存储它.

我可能在这里遗漏了一些非常基本的东西,但到目前为止我还没有能够提出处理这些问题的通用解决方案,所以我不得不逐个处理它们.你的想法非常受欢迎

php database timezone

20
推荐指数
3
解决办法
1万
查看次数

左加入表现优于内联?

我一直在我正在处理的应用程序中分析一些查询,并且我遇到了一个查询,它检索的行数超过了必要的数量,结果集在应用程序代码中被删除了.

将LEFT JOIN更改为INNER JOIN会将结果集修剪为所需的内容,并且可能也会更高效(因为选择的行数较少).实际上,LEFT JOIN'ed查询的表现优于INNER JOIN'ed,花费了一半的时间来完成.

LEFT JOIN :(总共127行,查询耗时0.0011秒)

INNER JOIN :(总共10行,查询耗时0.0024秒)

(我多次运行查询,这些是平均值).

在两者上运行EXPLAIN都没有解释性能差异:

对于INNER JOIN:

id  select_type     table   type    possible_keys   key     key_len     ref        rows     Extra
1   SIMPLE  contacts        index       NULL        name        302     NULL         235    Using where
1   SIMPLE  lists           eq_ref      PRIMARY     PRIMARY     4   contacts.list_id     1   
1   SIMPLE  lists_to_users  eq_ref      PRIMARY     PRIMARY     8   lists.id,const  1    
1   SIMPLE  tags            eq_ref      PRIMARY     PRIMARY     4   lists_to_users.tag_id   1    
1   SIMPLE  users           eq_ref      email_2     email_2     302     contacts.email 1    Using where
Run Code Online (Sandbox Code Playgroud)

对于LEFT JOIN:

id  select_type     table …
Run Code Online (Sandbox Code Playgroud)

mysql database performance join

15
推荐指数
2
解决办法
1万
查看次数

(Apache)错误日志美化

谁知道一个好的错误日志美化?(应该能够处理apache错误日志).

应该是开源/免费的,最好是带有web界面

apache logging

11
推荐指数
1
解决办法
4502
查看次数

如何将整数数组显示为一组范围?(算法)

给定一个整数数组,迭代它并找出它涵盖的所有范围的最简单方法是什么?例如,对于如下数组:

$numbers = array(1,3,4,5,6,8,11,12,14,15,16);
Run Code Online (Sandbox Code Playgroud)

范围是:

 1,3-6,8,11-12,14-16
Run Code Online (Sandbox Code Playgroud)

language-agnostic arrays algorithm range

8
推荐指数
1
解决办法
3678
查看次数

PHP工具集中有什么?

每个PHP程序员都可能至少使用某种形式的模板引擎和数据库抽象层,但除了那些额外的东西你认为必不可少还是会推荐你的同事程序员尝试?

php devtools

8
推荐指数
1
解决办法
726
查看次数

在Textarea中获取光标位置

我正在尝试在文本区域中实现自动完成功能(类似于http://www.pengoworks.com/workshop/jquery/autocomplete.htm).

我想要做的是当用户输入一组特定的字符(比如插入:)时,他们会得到一个带有AJAX填充的div,可能有可选择的匹配.

在常规文本框中,这当然很简单,但在文本区域中,我需要能够根据光标在屏幕上的正确位置弹出div.

有人可以提供任何指示吗?

谢谢,-M

textarea autocomplete cursor-position

8
推荐指数
1
解决办法
5690
查看次数

解决SVN合并递归地推迟了冲突

我有一个dev分支,暂时没有被触及.我将主干合并到它中以整合主线中的许多修复/更改,因为它已经扩展,但现在我有许多小冲突(merge-left/merge-right).

我希望使用最新的主干修订来解决每个冲突.是否有一个我可以运行的命令可以自动解决一个方向下工作副本下的所有冲突(合并权应该用于所有冲突)?

编辑:正如评论中所示,我尝试恢复然后使用--accept选项运行svn merge,但显然SVN 1.0中没有这样的选项.仍在寻找解决方案.

svn merge conflict

4
推荐指数
1
解决办法
2万
查看次数