Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Symfony1 原则:生成迁移差异不会生成任何新迁移_Symfony1_Doctrine_Migration_Symfony 1.4 - Fatal编程技术网

Symfony1 原则:生成迁移差异不会生成任何新迁移

Symfony1 原则:生成迁移差异不会生成任何新迁移,symfony1,doctrine,migration,symfony-1.4,Symfony1,Doctrine,Migration,Symfony 1.4,在我今天对schema.yml进行了一些更改后,每个更改后都跟着diff、migrate、build命令,diff操作停止工作 最后一次成功的迁移是第243次 现在,每次我做出新的更改,当我发出diff命令时,结果总是一样的: /usr/bin/php /.../symfony --color doctrine:generate-migrations-diff >> doctrine generating migration diff >> file+ /tmp

在我今天对schema.yml进行了一些更改后,每个更改后都跟着diff、migrate、build命令,diff操作停止工作

最后一次成功的迁移是第243次

现在,每次我做出新的更改,当我发出diff命令时,结果总是一样的:

/usr/bin/php /.../symfony --color doctrine:generate-migrations-diff
>> doctrine  generating migration diff
>> file+     /tmp/doctrine_schema_92228.yml
Done.
lib/migration/doctor中没有创建新文件,因此我无法使用migrate命令将更改提交给数据库

我试图清除缓存,清理模型文件,构建所有类,并重新启动


有什么想法吗?

这是我遇到的每次迁移和成功的最好方法。我猜起来花了很多钱,但效果很好,可以与多个数据库一起使用。我可能会在一些句子中出错,所以请随意添加或更正我在您看到的任何内容

迁移,最安全的方式:)

如果您需要为多个数据库执行迁移,请应用这些修补程序并清除symfony缓存,它们可以完美地工作:

A.备份项目和数据库:

  • 保存Symfony项目文件。(可选但安全的方式)
  • 仅保存数据库表架构
  • 仅保存数据库表数据
  • 使用数据保存数据库表架构
  • B.如何更改.yml文件:

  • .yml
    文件不能包含奇怪的符号,如
    ñ
    '
    ,`````。。。或非UTF字符

  • 始终在记事本++或升华中显示空格和制表符。不能有标签

  • 即使在不同的数据库中,也不能有两个同名的模块。永远不要设置两个同名的模块,否则会有很多问题

  • 如果要使用多个数据库,必须在schema.yml文件的开头指定
    连接
    属性:

  • 使用多个数据库时,同样必须为具有正确连接的模块设置绑定
    连接

  • 在schema.yml中设置正确的变量值和类型:

  • 使用多个数据库时,请注意,每次仅为一个数据库修改一个schema.yml

  • 如果要将具有关系的新表添加到另一个表,建议分两步、两次迁移来完成。首先,仅添加表并迁移。然后添加关系并再次迁移。这是最安全的方法

  • 您可以在不同的位置使用不同的schemas.yml

  • C.迁移更改:

  • 安装此插件,因为它有用于检查更改的修复和改进:

  • 为项目的每个数据库创建一个新表。插件需要:

  • 在“版本”列中,将其值设置为您现在拥有的最新迁移版本。必须对具有表迁移\u版本的每个数据库执行此步骤:

  • 清除Symfony缓存:

  • 使迁移有所不同(您需要上面的插件和创建的版本表)

  • 检查最近生成的更改在以下文件中是否正确:

  • 通过指定一个数字继续向上迁移
    !,永远不要和好!。还要记住新参数--connection。如果应用了上述修补程序,它现在可以工作,并且只迁移正确的数据库:

  • 重建模型、表单、过滤器、删除旧模型

  • 将所有数据库设置为其表迁移\u版本中的最新迁移编号:

  • 可选步骤,如果您想知道迁移后发送到数据库的最新SQL查询:

  • D.链接和文件:









    迁移涉及的主要文件:

    Migration.php、Builder.php、sfTaskMigration.php

    在运行diff之前,您是否使用新模式生成了类?如果是这样,请回滚您的模式,重新生成您的类,重新应用您的模式更改并重新运行diff。感谢您的建议;不,我总是按照这个顺序迁移构建;现在,在完成完整备份之后,我将尝试从模型重建模式;-)更新:我从db重建了schema.yml;然后我试着建立模型,但现在我得到了这个警告:
    /usr/bin/php/../symfony——颜色原则:构建模型>>原则生成模型类>>文件+/tmp/doctor_schema_93565.yml php注意:未定义索引:别名在/../lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Import/Builder.php第685行
    我是困惑…哇,清理你的缓存?(我不知道为什么会出现这个错误)目前我有类似的问题-diff命令不会生成任何其他文件。我只是放弃了寻找解决方案,开始手动编写迁移类。通常我对数据库的更改并不是很重要,所以写起来相对容易:)哇,我一有时间就去试试;同时,我发现在我的机器上运行migrations diff会使php5崩溃8-|该插件在某些系统中可能无法工作,因此您需要找出崩溃的原因并修复代码。在Windows7、PHP5.4、Symfony1.14.17中对我有效。迁移的方法可能还有很多,即使插件不适合您,您仍然可以使用原始命令进行迁移,然后继续执行下一步。
    connection: doctrine_master
    
    Tbtest001:
      connection: doctrine_master
      tableName: tb_test001
    
    name: migration_version , column: version  (int (11)). (autoincrement=false).
    
    UPDATE databasetest.migration_version SET databasetest.migration_version.version='31';
    UPDATE databasetest2.migration_version SET databasetest2.migration_version.version='31';
    
    symfony cc
    
    symfony model:diff > migratediff.log
    
    .\lib\migration\doctrine\XXXXXX_versionXXX.php
    .\data\migration\history\XXXXXXXXXX.yml
    
    symfony doctrine:migrate 32 --connection=doctrine_master > migrateUP.log
    
    symfony doctrine:build-model
    symfony doctrine:build-forms
    symfony doctrine:build-filters
    symfony doctrine:clean-model-files
    symfony cc
    
    UPDATE databasetest.migration_version SET databasetest.migration_version.version='32';
    UPDATE databasetest2.migration_version SET databasetest2.migration_version.version='32';
    
    symfony doctrine:build-sql [--application[="..."]] [--env="..."]