【问题标题】:How can I prevent Doctrine from generating SQL for a specific table?如何防止 Doctrine 为特定表生成 SQL?
【发布时间】:2011-04-05 08:28:54
【问题描述】:

我有一个巨大的表,我想在 Symfony/Doctrine 中使用它,但我不希望 Doctrine 每次重新生成我的表模式时都填充它,因为它很大,导入时间太长,它如果我把它放在固定装置上,效果就不好了。

如何在 Doctrine 中定义它的结构,为 PHP 生成它的数据模型,同时阻止 Doctrine 生成数据库表模式?

【问题讨论】:

  • 不确定你的意思。创建表或从夹具加载数据需要很长时间吗?
  • 加载数据,如果我将它放在夹具中。
  • 我想这个表是只读的,你不想重建它的类并插入 sql。如果是这样,您可以将此模式移动到单独的连接,并且仅在您的“教义”连接中构建类。看看my symfony fork,我在哪里实现了这个。例如,您可以运行 ./symfony dictionary:build --all --and-load --con='doctrine' 它只会影响与学说连接的类。

标签: symfony1 doctrine


【解决方案1】:

不要将这些数据保存到您的设备中,而是使用 mysqldump(或类似的)将其导出,然后再导入(使用普通 SQL 命令),例如。

mysql -u user -p password database_name < data/massive_table_export.sql

【讨论】:

  • 我有两个问题:1)即使是原始 mysql 导入也太慢 2)我想在 schema.yml 中定义表
  • 如果原始导入太慢,那么您将需要将其存储在 symfony/doctrine 不会破坏/重建它的地方。此外,您可以在模式中定义表,只是在转储表时不要导出表定义(或使用create if not exists)。事实上,这正是我所做的。我还有一个巨大的表,我在我的开发环境中使用了几行虚拟数据,并使用脚本来选择是在构建时加载完整(慢)表还是虚拟(快速)表。跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
  • 2019-10-09
  • 1970-01-01
  • 1970-01-01
  • 2019-03-10
  • 2015-06-01
相关资源
最近更新 更多