我按照正确的CakePhp命名约定创建一个CakePhp模型,并在$sequence
属性中添加在Oracle数据库上创建的序列名称。
通过sql plus插入一条记录是好的,但通过Cakephp插入数据会触发错误:
[code] => 2289
[message] => ORA-02289: the sequence does not exists
[offset] => 7 [sqltext] => SELECT my_sql_table_seq.currval FROM dual
即使在清理了tmp / cache内容之后,我也看到了同样的错误,就好像cakephp尝试猜测序列名称一样,甚至以正确的方式命名了sequence属性。
有没有办法看出它为什么会发生?
答案 0 :(得分:1)
很明显,您的oracle 架构中没有名为my_sql_table_seq
的序列,
或者你可能在另一个架构中有这个序列,并且你错过了相关的架构名称,因为prefix
让'致电myschema
:select myschema.my_sql_table_seq.currval from dual;
(如果您的模式被授予此序列执行):
SQL> conn otherschema/password1
SQL> grant execute on my_sql_table_seq to myschema;
SQL> conn myschema/password2
SQL> select otherschema.my_sql_table_seq.currval from dual;
或只是创建一个序列:
SQL> conn myschema/password2
SQL> create sequence my_sql_table_seq increment by 1 minvalue 0;
SQL> select my_sql_table_seq.currval from dual;