Yii2:连接到 Oracle 数据库
Yii2: Connect to Oracle database
我需要将 Yii2 模型连接到 Oracle 数据库,但尽管阅读了有关此主题的多个答案,但它仍然无法正常工作。
我用于手动登录的 Oracle 登录凭据类似于:
- 主持人:hosturl.abc.com
- 端口:1521
- SID: 用户名
- 用户:用户名
- 密码:passABC
在手动登录过程中,我需要select适当的Schema,之后我可以看到所有的表。
我不清楚如何将这些详细信息包含在 oci 连接中。这是我没有成功的做法:
'db2' => [
'class' => 'yii\db\Connection',
'dsn' => 'oci:dbname=//hosturl.abc.com:1521/sidname;charset=UFT-8',
'username' => 'username',
'password' => 'passABC'
],
我收到错误 "The table does not exist: TableName" 但是,即使我提供了完全随机的详细信息(即错误的用户名、错误的主机、错误的密码等),我也会收到此消息)
我不清楚为什么无法连接。也许 Oracle 数据库拒绝所有查询?我需要在连接凭据中包含 SID 吗?
感谢任何帮助
更新
我认为我的安装一定存在更普遍的问题。我正在尝试如下原始连接:
$conn = oci_connect("username", "passABC", "//hosturl.abc.com/sidname");
if (!$conn) {
print "There is a problem";
} else {
print "Connected to Oracle!";
}
此returns以下错误:
Call to undefined function oci_connect()
有什么建议吗?这看起来像我的 php 设置有问题??
已解决!
1) oci_connect 不工作:已解决
请参阅此 post 了解更多详情 。 Yii2 需要此修复才能连接到 Oracle。
2) Oracle 数据库的 Yii2 数据库凭据
/common/config/main-local:
'db' = [
'class' => 'yii\db\Connection',
'dsn' => 'oci:dbname=//hosturl:1521/SID;charset=UTF8',
'username' => 'dbusername',
'password' => 'dbpassword',
]
我尝试了一些 Yii2 oci8 扩展,但 none 对我有用。相反,oci_connect 的修复 (1) 起作用了,不需要额外的 Yii2 驱动程序。我能够使用标准 'yii\db\Connection' class.
3) 数据库架构
在 Oracle 数据库中,我们有许多模式,我不确定如何查询特定模式中的特定 table。最终解决方案很简单:在每个模型中,将架构名称添加到 table 名称之前。例如:
class myTable extends ActiveRecord
{
public static function tableName()
{
return 'schemaName.myTable';
}
我需要将 Yii2 模型连接到 Oracle 数据库,但尽管阅读了有关此主题的多个答案,但它仍然无法正常工作。
我用于手动登录的 Oracle 登录凭据类似于:
- 主持人:hosturl.abc.com
- 端口:1521
- SID: 用户名
- 用户:用户名
- 密码:passABC
在手动登录过程中,我需要select适当的Schema,之后我可以看到所有的表。
我不清楚如何将这些详细信息包含在 oci 连接中。这是我没有成功的做法:
'db2' => [
'class' => 'yii\db\Connection',
'dsn' => 'oci:dbname=//hosturl.abc.com:1521/sidname;charset=UFT-8',
'username' => 'username',
'password' => 'passABC'
],
我收到错误 "The table does not exist: TableName" 但是,即使我提供了完全随机的详细信息(即错误的用户名、错误的主机、错误的密码等),我也会收到此消息)
我不清楚为什么无法连接。也许 Oracle 数据库拒绝所有查询?我需要在连接凭据中包含 SID 吗?
感谢任何帮助
更新
我认为我的安装一定存在更普遍的问题。我正在尝试如下原始连接:
$conn = oci_connect("username", "passABC", "//hosturl.abc.com/sidname");
if (!$conn) {
print "There is a problem";
} else {
print "Connected to Oracle!";
}
此returns以下错误:
Call to undefined function oci_connect()
有什么建议吗?这看起来像我的 php 设置有问题??
已解决!
1) oci_connect 不工作:已解决
2) Oracle 数据库的 Yii2 数据库凭据
我尝试了一些 Yii2 oci8 扩展,但 none 对我有用。相反,oci_connect 的修复 (1) 起作用了,不需要额外的 Yii2 驱动程序。我能够使用标准 'yii\db\Connection' class. 3) 数据库架构
请参阅此 post 了解更多详情
/common/config/main-local: 'db' = [
'class' => 'yii\db\Connection',
'dsn' => 'oci:dbname=//hosturl:1521/SID;charset=UTF8',
'username' => 'dbusername',
'password' => 'dbpassword',
]
在 Oracle 数据库中,我们有许多模式,我不确定如何查询特定模式中的特定 table。最终解决方案很简单:在每个模型中,将架构名称添加到 table 名称之前。例如:class myTable extends ActiveRecord
{
public static function tableName()
{
return 'schemaName.myTable';
}