Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道&x2B;甲骨文+;oracle增强适配器:db:create询问系统密码?_Ruby On Rails_Oracle_Activerecord - Fatal编程技术网

Ruby on rails 轨道&x2B;甲骨文+;oracle增强适配器:db:create询问系统密码?

Ruby on rails 轨道&x2B;甲骨文+;oracle增强适配器:db:create询问系统密码?,ruby-on-rails,oracle,activerecord,Ruby On Rails,Oracle,Activerecord,我刚刚更新了一个,不知道为什么我的rake db:create db:migrate要求我输入Oracle数据库的SYS/SYSTEM密码。我在config/database.yml中配置的Oracle用户具有以下权限: GRANT CREATE SESSION TO my-user; GRANT ALTER SESSION TO my-user; GRANT CREATE SEQUENCE TO my-user; GRANT CREATE SYNONYM TO my-user; GRANT C

我刚刚更新了一个,不知道为什么我的
rake db:create db:migrate
要求我输入Oracle数据库的SYS/SYSTEM密码。我在
config/database.yml
中配置的Oracle用户具有以下权限:

GRANT CREATE SESSION TO my-user;
GRANT ALTER SESSION TO my-user;
GRANT CREATE SEQUENCE TO my-user;
GRANT CREATE SYNONYM TO my-user;
GRANT CREATE VIEW TO my-user;
GRANT CREATE TABLE TO my-user;
GRANT GATHER_SYSTEM_STATISTICS TO my-user;
GRANT CREATE PROCEDURE TO my-user;
GRANT CREATE TRIGGER TO my-user;
GRANT CREATE DATABASE LINK TO my-user;
GRANT CREATE TYPE TO my-user;
这就是Rails给我的提示:

Please provide the SYSTEM password for your Oracle installation (set ORACLE_SYSTEM_PASSWORD to avoid this prompt)
我不明白为什么,
我的用户
应该拥有自己的模式所需的所有权限


有什么想法吗?

似乎在gem中对rake db:create要求系统密码是硬编码的

def create
  system_password = ENV.fetch('ORACLE_SYSTEM_PASSWORD') {
    print "Please provide the SYSTEM password for your Oracle installation (set ORACLE_SYSTEM_PASSWORD to avoid this prompt)\n>"
    $stdin.gets.strip
  }
  establish_connection(@config.merge('username' => 'SYSTEM', 'password' => system_password))
  begin
    connection.execute "CREATE USER #{@config['username']} IDENTIFIED BY #{@config['password']}"
  rescue => e
    if e.message =~ /ORA-01920/ # user name conflicts with another user or role name
      connection.execute "ALTER USER #{@config['username']} IDENTIFIED BY #{@config['password']}"
    else
      raise e
    end
  end
  connection.execute "GRANT unlimited tablespace TO #{@config['username']}"
  connection.execute "GRANT create session TO #{@config['username']}"
  connection.execute "GRANT create table TO #{@config['username']}"
  connection.execute "GRANT create view TO #{@config['username']}"
  connection.execute "GRANT create sequence TO #{@config['username']}"
end

如您所见,它实际上也创建了您在
数据库.yml中设置的用户,并为其授予了一些特权


最好跳过
rakedb:create
。您可以在生产环境中手动创建一次数据库,在开发/测试环境中,允许系统访问您的Ruby代码是可以的。

哦,是的,真丢脸。。。我本来可以自己查源代码的…:-/好的,但是有了这些授权,创建一个绝对有意义的用户。