我正在使用 Symfony2 和 Doctrine2 编写一个应用程序,我需要使用 Oracle 作为我的数据库(我不熟悉,我几乎总是使用 MySQL)。我已经在我的开发盒上安装了 Oracle XE 并创建了一个用户。
我的 Symfony2 配置中的连接参数如下所示:
database_driver: oci8
database_host: localhost
database_name: xe
database_user: myusername
database_password: mypassword
database_port: 1521
database_charset: AL32UTF8
在 CLI 上运行php app/console doctrine:schema:create
时,模式已成功创建,但是当尝试使用 加载我的初始固定装置时php app/console doctrine:fixtures:load
,我收到以下错误:
[Doctrine\DBAL\DBALException]
An exception occurred while executing 'INSERT INTO my_currency
(id, code, name, symbol) VALUES (?, ?, ?, ?)' with params
{"1":3,"2":"RUB","3":"Russian Ruble","4":"\u0440\u0443\u0431."}:
ORA-12899: value too large for column "MYUSERNAME"."MY_CURRENCY"."SYMBOL"
(actual: 7, maximum: 4)
我的夹具脚本中包含以下数据,用于插入此行:
array('RUB', 'Russian Ruble', 'руб.'),
实体定义为:
Foo\MyBundle\Entity\Currency:
type: entity
table: my_currency
id:
id:
type: integer
generator: { strategy: AUTO }
fields:
code:
type: string
length: 3
name:
type: string
length: 64
symbol:
type: string
length: 4
据我了解,Oracle XE 有一个默认的 UTF-8 字符集,因此字段类型不需要设置为 NVARCHAR2(它们被设置为 VARCHAR2,由 Doctrine 自动设置)。
有人对我哪里出错有任何想法吗?