0

我对蛋糕不是很熟悉..所以这是我的问题..我们正在mysql上开发一个应用程序,但它最终可能需要部署到mssql或oracle。我们如何确保我们的主键不会出现奇怪的问题?在 mysql 中,它们是 AUTO INCREMENT 列,但在 oracle 中的 IIRC 您需要使用序列……有没有办法使这成为透明的更改?我是不是想多了?

有没有人有在 cakephp 应用程序上切换数据库供应商的经验?有什么需要注意的提示或事情吗?

4

3 回答 3

1

在 Cake 数据库配置文件中,您选择您的驱动程序(参见http://book.cakephp.org/view/40/Database-Configuration)。然后,如果您使用 fieldname 设置您的 PK(如果使用 MySQL,这也是您的 A_I 列)id,Cake 将自动处理 auto_increment 插入。我假设(注意:没有尝试过使用其他东西的 Cake)Cake 会处理 Oracle 之类的 A_I 列。

Cake 使用它自己的 DB 抽象层——但包含的抽象涵盖了相当多的内容,它会按照指定的方式执行(即它会为您处理自动增量的东西)。

简而言之,你可能想多了。也就是说,我会模拟一个小蛋糕应用程序,然后尝试切换它背后的数据库(更改您的数据库配置,您的应用程序应该会自动切换)。

HTH,特拉维斯

于 2009-03-02T20:16:32.937 回答
1

以下做法对我很有用

我使用蛋糕模式(我倾向于为每组模型设置 1 个模式文件。IE 用户、角色、配置文件可能都在一个 UsersSchema 文件中)

还可以看看使用 debuggable.com FixturesShell - 它允许您将测试用例装置导入实时数据库。非常适合从架构文件设置初始用户和角色组。

此外,如果您将“id”字段设置为 VARCHAR(36) 而不是 INT(#),蛋糕将自动使用 UUID 样式的 id。这意味着如果您需要将数据移动到另一个应用程序或服务器,您的数据发生 id 值冲突的可能性会大大降低。

夹具外壳还有一个用于生成 uuid 的命令行工具(因此您可以将它们添加到夹具中的 $records 变量中以进行插入等)

总之 - 使用 CakeSchema 模式外壳、来自 debuggable.com 的固定装置外壳和您的 id 的 UUID 值,它应该为您提供可移植的结构创建工具、可移植的数据插入工具和可移植的 id 字段格式。

http://github.com/felixge/debuggable-scraps/tree/fd0e5ad625cb21f5ba16e6b186821a5774089ac7/cakephp/shells/fixtures

http://api.cakephp.org/class/schema-shell

于 2009-03-04T01:05:20.440 回答
0

您需要使用“蛋糕模式”来管理您的数据库。这将在您创建数据库时处理所有特定于数据库的内容。

http://book.cakephp.org/view/735/Generating-and-using-Schema-files

于 2009-03-03T17:41:33.610 回答