- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我现在正在做的项目是将数据库从mysql 升级到Zend 框架中的postgreSQL。我已经通过“ESF 数据库迁移工具包”将数据库迁移到 PostgreSQL。诸如“Emp_FirstName”、“Emp_LastName”等字段名称如何在 PostgreSQL 中存储为“emp_firstname”和“emp_lastname”。这导致代码错误。但是,当我将 PostgreSQL 中的文件更新为 Emp_FirstName 时,它显示错误
********** Error **********
ERROR: column "Emp_FirstName" does not exist
SQL state: 42703
Character: 8
是否可以像在 MYSQL 中一样给出文件名?
最佳答案
迁移工具不是“双引号”标识符,因此它们的大小写被 PostgreSQL 扁平化为小写。您的代码必须引用标识符,以便它们保留大小写。 PostgreSQL 区分大小写并且将不带引号的标识符进行大小写扁平化,wheras MySQL is case-insensitive on Windows and Mac and case-sensitive on *nix .
参见 the PostgreSQL manual section on identifiers and keywords有关 PostgreSQL 行为的详细信息。无论如何,您可能应该阅读它,以便了解字符串引号的工作原理。
您需要选择以下选项之一:
当您添加 Oracle 支持并发现 Oracle 大写所有标识符时,最后一个选项将无济于事,因此我建议您选择前四个选项之一。我没有找到一种方法让迁移工具在快速的 30 秒 Google 搜索中引用标识符,但我没有花太多时间在这上面。我会先在迁移工具中寻找控制引用模式的选项。
PostgreSQL 没有配置选项来始终将标识符视为带引号或使用不区分大小写的标识符比较。
这远非您会遇到的唯一不兼容问题,因此请准备好更改查询和应用程序代码。在某些情况下,如果您打算继续支持 MySQL,您甚至可能需要一个针对 MySQL 的查询和另一个针对 PostgreSQL 的查询。
如果您没有使用 sql_mode = ANSI
并且在 MySQL 中使用 STRICT
模式,那么与使用这些选项相比,您在移植时会遇到更多麻烦,因为这两个选项都使 MySQL 更接近 SQL 标准行为。
关于PostgreSQL 字段名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15497273/
概述 CentOS Stream 成立于 2019 年,是“RHEL 下一步的滚动预览”。Red Hat 首席技术官 Chris Wright 和 CentOS 社区经理 Rich Bowen 各
我有一个使用 Mesosphere DC/OS 编排选项进行配置的 Azure 容器服务 (ACS) 集群。我可以在 Marathon UI 中创建一个应用程序。 但是,当我通过 Marathon U
我是一名优秀的程序员,十分优秀!