Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Getting Oracle ora-00918 column ambiguously defined #17448

Closed
SSiwek opened this issue Jul 19, 2019 · 3 comments
Closed

Getting Oracle ora-00918 column ambiguously defined #17448

SSiwek opened this issue Jul 19, 2019 · 3 comments
Labels
help wanted Oracle status:to be verified Needs to be reproduced and validated.

Comments

@SSiwek
Copy link
Contributor

SSiwek commented Jul 19, 2019

I have an innerjoin on two tables.
Both tables do have a column named dtimemod.

In gridview when I click on columnheader to sort, I get ora-00918

I think that the sql build system has to put the tablename in front of every column in the order by clause... It does do so with the rest of the clauses

WITH USER_SQL AS (SELECT "SHIPCONTPRT".* FROM "SHIPCONTPRT" INNER JOIN "SHIP" ON ("SHIPCONTPRT"."ZLAVISNR" = "SHIP"."SHIPID") AND (("SHIP"."SHIPSTAT" < 95) AND ("SHIP"."SHIPTY"='PV')) WHERE ZLLBLNAME is null ORDER BY "DTIMEMOD"),
PAGINATION AS (SELECT USER_SQL.*, rownum as rowNumId FROM USER_SQL)
SELECT *
FROM PAGINATION
WHERE rownum <= 20

Additional info

Q A
Yii version 2.0.20
PHP version 7.2.20
Operating system Unix
@yii-bot
Copy link

yii-bot commented Jul 19, 2019

Thanks for posting in our issue tracker.
In order to properly assist you, we need additional information:

  • When does the issue occur?
  • What do you see?
  • What was the expected result?
  • Can you supply us with a stacktrace? (optional)
  • Do you have exact code to reproduce it? Maybe a PHPUnit tests that fails? (optional)

Thanks!

This is an automated comment, triggered by adding the label status:need more info.

@SSiwek
Copy link
Contributor Author

SSiwek commented Jul 19, 2019

The error occurs everytime when I want to sort the attribut dtimemod via the gridview ( Clicking on the header of the table index view )

To reproduce the error you need two tables with same colum names.
Than do an inner join. Try to sort after one column via gridview.

As I stated before the sql build tool needs to add the tablename in front of the attribut
eg "SHIPCONTPRT.DTIMEMOD" for the order by clause

PDOException: SQLSTATE[HY000]: General error: 918 OCIStmtExecute: ORA-00918: Spalte nicht eindeutig definiert
(/builddir/build/BUILD/php-7.2.20/ext/pdo_oci/oci_statement.c:159) in /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php:1290
Stack trace:
#0 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php(1290): PDOStatement->execute()
#1 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php(1158): yii\db\Command->internalExecute('WITH USER_SQL A...')
#2 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php(399): yii\db\Command->queryInternal('fetchAll', NULL)
#3 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Query.php(237): yii\db\Command->queryAll()
#4 /var/www/html/intranet7/vendor/yiisoft/yii2/db/ActiveQuery.php(133): yii\db\Query->all(NULL)
#5 /var/www/html/intranet7/modules/packpruef/models/ShipcontprtQuery.php(32): yii\db\ActiveQuery->all(NULL)
#6 /var/www/html/intranet7/vendor/yiisoft/yii2/data/ActiveDataProvider.php(116): app\modules\packpruef\models\ShipcontprtQuery->all(NULL)
#7 /var/www/html/intranet7/vendor/yiisoft/yii2/data/BaseDataProvider.php(101): yii\data\ActiveDataProvider->prepareModels()
#8 /var/www/html/intranet7/vendor/yiisoft/yii2/data/BaseDataProvider.php(114): yii\data\BaseDataProvider->prepare()
#9 /var/www/html/intranet7/vendor/yiisoft/yii2/data/BaseDataProvider.php(155): yii\data\BaseDataProvider->getModels()
#10 /var/www/html/intranet7/vendor/kartik-v/yii2-grid/src/GridView.php(1441): yii\data\BaseDataProvider->getCount()
#11 /var/www/html/intranet7/vendor/yiisoft/yii2/widgets/BaseListView.php(158): kartik\grid\GridView->renderSummary()
#12 /var/www/html/intranet7/vendor/yiisoft/yii2/grid/GridView.php(326): yii\widgets\BaseListView->renderSection('{summary}')
#13 /var/www/html/intranet7/vendor/yiisoft/yii2/widgets/BaseListView.php(135): yii\grid\GridView->renderSection('{summary}')
#14 [internal function]: yii\widgets\BaseListView->yii\widgets{closure}(Array)
#15 /var/www/html/intranet7/vendor/yiisoft/yii2/widgets/BaseListView.php(138): preg_replace_callback('/{\w+}/', Object(Closure), '<div class="pan...')
#16 /var/www/html/intranet7/vendor/yiisoft/yii2/grid/GridView.php(301): yii\widgets\BaseListView->run()
#17 /var/www/html/intranet7/vendor/kartik-v/yii2-grid/src/GridView.php(1201): yii\grid\GridView->run()
#18 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Widget.php(140): kartik\grid\GridView->run()
#19 /var/www/html/intranet7/modules/packpruef/views/default/index.php(22): yii\base\Widget::widget(Array)
#20 /var/www/html/intranet7/vendor/yiisoft/yii2/base/View.php(348): require('/var/www/html/i...')
#21 /var/www/html/intranet7/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/var/www/html/i...', '[<span class="s...')
#22 /var/www/html/intranet7/vendor/yiisoft/yii2/base/View.php(156): yii\base\View->renderFile('/var/www/html/i...', Array, Object(app\modules\packpruef\controllers\DefaultController))
#23 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Controller.php(384): yii\base\View->render('index', Array, Object(app\modules\packpruef\controllers\DefaultController))
#24 /var/www/html/intranet7/modules/packpruef/controllers/DefaultController.php(46): yii\base\Controller->render('index', Array)
#25 [internal function]: app\modules\packpruef\controllers\DefaultController->actionIndex()
#26 /var/www/html/intranet7/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#27 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#28 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('index', Array)
#29 /var/www/html/intranet7/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('packpruef/defau...', Array)
#30 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#31 /var/www/html/intranet7/index.php(19): yii\base\Application->run()
#32 {main}

Next yii\db\Exception: SQLSTATE[HY000]: General error: 918 OCIStmtExecute: ORA-00918: Spalte nicht eindeutig definiert
(/builddir/build/BUILD/php-7.2.20/ext/pdo_oci/oci_statement.c:159)
The SQL being executed was: WITH USER_SQL AS (SELECT "SHIPCONTPRT".* FROM "SHIPCONTPRT" INNER JOIN "SHIP" ON ("SHIPCONTPRT"."ZLAVISNR" = "SHIP"."SHIPID") AND (("SHIP"."SHIPSTAT" < 95) AND ("SHIP"."SHIPTY"='PV')) WHERE ZLLBLNAME is null ORDER BY "DTIMEMOD"),
PAGINATION AS (SELECT USER_SQL.*, rownum as rowNumId FROM USER_SQL)
SELECT *
FROM PAGINATION
WHERE rownum <= 20 in /var/www/html/intranet7/vendor/yiisoft/yii2/db/Schema.php:664
Stack trace:
#0 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php(1295): yii\db\Schema->convertException(Object(PDOException), 'WITH USER_SQL A...')
#1 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php(1158): yii\db\Command->internalExecute('WITH USER_SQL A...')
#2 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Command.php(399): yii\db\Command->queryInternal('fetchAll', NULL)
#3 /var/www/html/intranet7/vendor/yiisoft/yii2/db/Query.php(237): yii\db\Command->queryAll()
#4 /var/www/html/intranet7/vendor/yiisoft/yii2/db/ActiveQuery.php(133): yii\db\Query->all(NULL)
#5 /var/www/html/intranet7/modules/packpruef/models/ShipcontprtQuery.php(32): yii\db\ActiveQuery->all(NULL)
#6 /var/www/html/intranet7/vendor/yiisoft/yii2/data/ActiveDataProvider.php(116): app\modules\packpruef\models\ShipcontprtQuery->all(NULL)
#7 /var/www/html/intranet7/vendor/yiisoft/yii2/data/BaseDataProvider.php(101): yii\data\ActiveDataProvider->prepareModels()
#8 /var/www/html/intranet7/vendor/yiisoft/yii2/data/BaseDataProvider.php(114): yii\data\BaseDataProvider->prepare()
#9 /var/www/html/intranet7/vendor/yiisoft/yii2/data/BaseDataProvider.php(155): yii\data\BaseDataProvider->getModels()
#10 /var/www/html/intranet7/vendor/kartik-v/yii2-grid/src/GridView.php(1441): yii\data\BaseDataProvider->getCount()
#11 /var/www/html/intranet7/vendor/yiisoft/yii2/widgets/BaseListView.php(158): kartik\grid\GridView->renderSummary()
#12 /var/www/html/intranet7/vendor/yiisoft/yii2/grid/GridView.php(326): yii\widgets\BaseListView->renderSection('{summary}')
#13 /var/www/html/intranet7/vendor/yiisoft/yii2/widgets/BaseListView.php(135): yii\grid\GridView->renderSection('{summary}')
#14 [internal function]: yii\widgets\BaseListView->yii\widgets{closure}(Array)
#15 /var/www/html/intranet7/vendor/yiisoft/yii2/widgets/BaseListView.php(138): preg_replace_callback('/{\w+}/', Object(Closure), '<div class="pan...')
#16 /var/www/html/intranet7/vendor/yiisoft/yii2/grid/GridView.php(301): yii\widgets\BaseListView->run()
#17 /var/www/html/intranet7/vendor/kartik-v/yii2-grid/src/GridView.php(1201): yii\grid\GridView->run()
#18 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Widget.php(140): kartik\grid\GridView->run()
#19 /var/www/html/intranet7/modules/packpruef/views/default/index.php(22): yii\base\Widget::widget(Array)
#20 /var/www/html/intranet7/vendor/yiisoft/yii2/base/View.php(348): require('/var/www/html/i...')
#21 /var/www/html/intranet7/vendor/yiisoft/yii2/base/View.php(257): yii\base\View->renderPhpFile('/var/www/html/i...', '[<span class="s...')
#22 /var/www/html/intranet7/vendor/yiisoft/yii2/base/View.php(156): yii\base\View->renderFile('/var/www/html/i...', Array, Object(app\modules\packpruef\controllers\DefaultController))
#23 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Controller.php(384): yii\base\View->render('index', Array, Object(app\modules\packpruef\controllers\DefaultController))
#24 /var/www/html/intranet7/modules/packpruef/controllers/DefaultController.php(46): yii\base\Controller->render('index', Array)
#25 [internal function]: app\modules\packpruef\controllers\DefaultController->actionIndex()
#26 /var/www/html/intranet7/vendor/yiisoft/yii2/base/InlineAction.php(57): call_user_func_array(Array, Array)
#27 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Controller.php(157): yii\base\InlineAction->runWithParams(Array)
#28 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Module.php(528): yii\base\Controller->runAction('index', Array)
#29 /var/www/html/intranet7/vendor/yiisoft/yii2/web/Application.php(103): yii\base\Module->runAction('packpruef/defau...', Array)
#30 /var/www/html/intranet7/vendor/yiisoft/yii2/base/Application.php(386): yii\web\Application->handleRequest(Object(yii\web\Request))
#31 /var/www/html/intranet7/index.php(19): yii\base\Application->run()
#32 {main}
Additional Information:
Array
(
[0] => HY000
[1] => 918
[2] => OCIStmtExecute: ORA-00918: Spalte nicht eindeutig definiert
(/builddir/build/BUILD/php-7.2.20/ext/pdo_oci/oci_statement.c:159)
)

@samdark samdark added help wanted status:to be verified Needs to be reproduced and validated. labels Jul 23, 2019
@dtmonterrey
Copy link

Hi, try specifying the selected columns in your query using the select() method. Had the same issue when the query send to oracle had table.* instead of having the columns one by one

@mtangoo mtangoo closed this as completed Apr 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Oracle status:to be verified Needs to be reproduced and validated.
Projects
None yet
Development

No branches or pull requests

6 participants