当前位置: 首页 > 知识库问答 >
问题:

获取由laravel 4迁移执行的原始SQL

张建华
2023-03-14

我工作的环境不是直接将更改部署到客户机服务器,而是从SVN修订版生成一个带有更改列表的构建tarball,并将其发送给他们的web团队。

问题是,我不允许做任何花哨的事情,只允许更改站点资产和原始查询,这意味着当我需要客户机对其暂存进行更改时,我不能要求客户机运行laravel迁移

因此,我希望能够在迁移运行时捕获原始SQL,从那里我可以准确地看到发生了什么变化,我可以告诉客户机“这是一个需要更改的SQL文件,请在应用更新时查看并运行它。”

共有2个答案

艾鹭洋
2023-03-14

如果将其添加到路线的开头。php文件-它将转储Laravel运行的所有SQL:

Event::listen('illuminate.query', function($sql)
{
    var_dump($sql);
}); 

所以,这样做,然后运行php工匠迁移-和所有的SQL被转储。

然后,您可以将SQL记录到文件或其他文件中,而不是var_dump-可能性是无穷无尽的...

慕仲渊
2023-03-14

作为一种不需要设置任何事件监听器的替代解决方案,您可以在运行命令时使用--ax选项:

php artisan migrate --pretend

这将转储SQL将由迁移运行的查询,但实际上没有运行迁移。它将在每一行输出迁移的类名和从该迁移运行的查询,因此对于创建具有唯一的email列的user表的迁移,您将得到这样的结果:

CreateUsersTable: create table `users` (`id` int unsigned not null auto_increment primary key, `email` varchar(255) not null, `password` varchar(60) not null, `created_at` timestamp default 0 not null, `updated_at` timestamp default 0 not null) default character set utf8 collate utf8_unicode_ci
CreateUsersTable: alter table `users` add unique users_email_unique(`email`)

从Laravel 4到Laravel的最新版本(我发布这个答案的时候是5.1),这个选项一直存在。

 类似资料:
  • 问题内容: 我正在尝试使用任何语法,但无法考虑如何正确编写此代码: 也尝试过 和双引号等。运行迁移时,总是得到以下信息: 语法错误或访问冲突:1064您的SQL语法有错误。检查 与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第1行的“用户”修改“年龄” DATETIME附近使用 是的,我已经检查过,MariaDB使用MySQL的语法(至少在这种情况下)。 问题答案: 使用反引号而

  • 问题内容: 有没有办法从获取原始/原始JSON值? 问题: 现在是,但是我需要原始字符串。 有没有办法获得这个原始价值?另外,我无法更改创建方式(例如更改设置),因为它作为参数传递给我的课程… (参考:原始的NJsonSchema问题) 问题答案: 您无法获取原始字符串,无法识别日期字符串并将其转换为自身内部的结构。如果您这样做,则可以看到以下内容: 但是,您可以通过执行以下操作以ISO 8601

  • 我在一株嵌入的野花上做了阿奎利亚测试。尽管所有移植脚本、集成器类(flyway在其中安装)和所有FlyWay包(来自POM文件)都包含在。war文件(部署在嵌入式wildfly上),不进行迁移。 这有什么原因吗?这是原则上不起作用还是我错过了什么? 我喜欢实现的是,arquillian运行的自动测试将设置一个内存数据库,其方案与使用相同迁移脚本的生产数据库相同。 编辑:正如ytg下面所问的,我添加

  • 在使用可重复迁移时,我观察到一些奇怪的飞行路线行为。文件指出: 在一次迁移运行中,可重复迁移始终在所有挂起的版本化迁移执行完毕后最后应用。 但在我的例子中,可重复迁移(正在重新创建一个DB视图)似乎失败了,因为它是在版本化迁移之前执行的。 迁移前的Flyway信息数据:

  • 已有项目 期望接入 Mpx,可根据项目或人力情况选择如何迁移,Mpx 不要求用户一次性用上框架的所有东西。 项目初始期:可以考虑一次性转为 Mpx,此时迁移成本比较低 项目成熟期:若人力有限,可选择逐步将原生小程序转为Mpx,而且 不需要对原有代码做全局重写。可参考此demo:Mpx渐进接入demo。 可以保持原有代码不变,新的组件、页面期望使用 Mpx 某些特性时才引入 Mpx。(推荐新模块引

  • 问题内容: 我用一些模型创建了一个新的应用程序,现在我发现一些模型没有经过深思熟虑。由于我尚未提交代码,因此明智的做法是将数据库迁移到最后的良好状态,并使用更好的模型重新进行迁移。在这种情况下,最后的良好状态是新应用程序不存在的数据库。 如何从Django 1.7的初始迁移迁移回去? 在一个可以这样做: 将从迁移历史记录中清除并删除的所有表。 如何在Django 1.7迁移中做到这一点? 问题答案

  • 问题内容: 在我的应用程序中,我使用来显示一些日志信息。因为我想突出显示文本中的某些特定行(例如错误消息),所以将设置为“ ”。这样,我可以设置文本格式。 现在,我创建一个JButton,将其内容复制到剪贴板中。这部分很简单,但是我的问题是,当我调用时,我得到了HTML代码,例如: 而不是只获取原始内容: 有没有办法只获取纯文本格式的内容?还是我需要自己将HTML转换为原始文本? 问题答案: 基于

  • 问题内容: 我在相当基本的android开发水平上。 我想从诸如“ http://www.google.com”的页面获取文本。(我将使用的页面只有文本,因此没有图片或类似的东西)所以,要明确:我想将页面上的文本写入应用程序中的字符串等。 我尝试了这段代码,但是我什至不知道它是否能满足我的要求。 无论如何我都无法收到任何文字。我应该怎么做? 问题答案: 从您提供的示例代码中,您甚至没有读取请求的响