【问题标题】:Cakephp 2.5 can not find an Oracle sequenceCakephp 2.5 找不到 Oracle 序列
【发布时间】:2018-08-08 18:08:20
【问题描述】:

我按照正确的 CakePhp 命名约定创建了一个 CakePhp 模型,并将在 Oracle 数据库上创建的序列名称添加到 $sequence 属性中。

通过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 尝试猜测序列名称,即使序列属性以正确的方式命名。

有没有办法知道为什么会发生?

【问题讨论】:

  • 可能是您的 CakePhp 模拟(使用)的用户无权查看序列,或者您缺少同义词。

标签: oracle cakephp


【解决方案1】:

很明显,您的 oracle schema 中没有名为 my_sql_table_seq序列
或者也许你在另一个 schema 中有这个 sequence 并且你缺少相关的 schema 名称为 prefix 让我们调用 myschema :@987654324 @

如果您的架构被授予执行此序列的权限):

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;

【讨论】:

  • 如果使用 sqlplus 正在工作,我认为在另一个用户中创建序列(读取模式)不是一个好主意......它已经在它的模式中......
  • @shadowsheep 我们还不知道它自己的模式。可能在任何其他模式中创建,但试图从当前模式调用。我提到了可能的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-12
相关资源
最近更新 更多