Symfony2:更新未在phpmyadmin中反映的表模式

时间:2014-09-06 15:20:10

标签: symfony doctrine-orm

我有一些关于Symfony 2的初学者问题,我无法从之前的问题中得到明确的答案(也许是因为它们是真正基本的)

  1. 当您从命令行创建一个新的symfony2项目并具体指定数据库名称和密码时,这是否意味着自动创建数据库(您可以在phpmyadmin中看到)或者手动执行此操作。

  2. 在此之后,如果创建了多个实体,然后使用

     doctrine:schema:update
    
  3. 是否应在项目“parameters.yml”文件中指定的数据库中自动创建指定的表。

    我已经执行了“doctrine:schema:update --force”然后给了我

     Updating database schema...
     Database schema updated successfully! "2" queries were executed
    

    但是没有创建表格。所以我再次尝试,看看这个消息会是什么......

     unknown-ec:35:86:4d:41:5e:symfony simonalice$ php app/console doctrine:schema:update --force
     Nothing to update - your database is already in sync with the current entity metadata.
     unknown-ec:35:86:4d:41:5e:symfony simonalice$ 
    

    很明显,Doctrine认为它同步 - 但phpmyadmin中没有表格。

    显然已经完成了初学者的工作....但我会感谢Symfony 2老将对此的一些指导。

1 个答案:

答案 0 :(得分:0)

回答你的问题:

  1. 不,创建新的Symfony项目不会创建数据库(或连接到它的用户)。您仍然需要这样做,我建议您使用适当的权限为您的应用程序创建一个专用用户。您需要使用具有管理权限的数据库用户才能执行此操作。出于安全原因,最好不对您的应用程序使用数据库管理员帐户。要指示doctrine创建数据库(一旦设置了db用户和连接参数),就可以运行php app/console doctrine:database:create控制台命令。

  2. 是的,运行doctrine:schema:update控制台命令将生成您的数据库实体,但它不会/无法创建您的数据库。您还可以使用--force选项应用自上次更新以来所做的更改。这些更新仍将受到您定义的任何列约束的约束,因此,例如,如果您将现有的可空列更改为not null,则如果已存在包含空值的记录,则会收到错误。

  3. 希望有所帮助。