【发布时间】:2016-02-01 13:48:27
【问题描述】:
我使用 Symfony(使用 FOSUserBundle)和 Doctrine 从头开始重新开发了一个非常古老的网站。旧站点仍然在线,并且在数据库中有“实时”数据(具有latin1 字符集),我试图弄清楚如何将其传输到新数据库(utf8mb4 字符集)。
新站点可以很好地处理我加载到开发数据库Doctrine Fixtures 中的虚拟数据。但是,例如,对于 FOSUserBundle,数据库表具有更多的强制性参数,其中包含以下变量:
现任成员:
userid
username
email
password
joindt
FOSUserBundle 表:
id
username
username_canonical
email
email_canonical
salt
password
但是,我整个周末都在尝试各种不同的方法来复制旧数据库并将其转换为新数据库所需的内容,即在关闭外键生成的情况下从 PhpMyadmin 导出,尝试导出方法,例如:
1a。 csv文件的不同配置
1b。在excel中打开以调整列(例如复制
username并再次粘贴为username_canonical)1c。将 csv 文件作为新的数据库表导入回 PhpMyAdmin 或删除外键约束并清空新表并读入数据
2a。 SQL代码
- 2b。运行此 SQL 代码以提供旧 SQL
INSERT INTO步骤 - 2c。键入手动 SQL,例如
CREATE TABLE Member as SELECT username as username, username as username_canonical FROM old
我已经尝试了所有这些的许多组合,但都没有奏效。我敢肯定,如果我继续坚持下去,我将能够拼凑出一些东西来生成这个 FOSUserBundle Member 表。但是,我担心我会遇到另一个问题,即表格之间的关联不允许我创建其他表格(例如Products、Orders)。
一目了然:
【问题讨论】:
-
我可能会使用Doctrine\MigrationsBundle 并编辑通过运行
doctrine:migrations:diff创建的sql 来处理您的更改。您可以在其中编写任意数量的复杂脚本来处理您的问题。
标签: mysql symfony orm doctrine-orm