簡體   English   中英

學說:映射:無法從現有的 oracle 數據庫導入

[英]doctrine:mapping:import from existing oracle database not possible

我正在使用帶有表“data.account”、“data.users”和“data.service”的 oracle db 12c。 我在這些表上創建了一個具有“選擇”權限的單獨用戶“api”。

然后我創建了一個新的 symfony flex 骨架並添加了進一步的要求:

  "require": {
    "php": "^7.1.3",
    "ext-ctype": "*",
    "ext-iconv": "*",
    "sensio/framework-extra-bundle": "^5.4",
    "sensiolabs/security-checker": "^6.0",
    "symfony/apache-pack": "^1.0",
    "symfony/cache": "4.3.*",
    "symfony/console": "4.3.*",
    "symfony/dotenv": "4.3.*",
    "symfony/flex": "^1.3.1",
    "symfony/framework-bundle": "4.3.*",
    "symfony/monolog-bundle": "^3.4",
    "symfony/orm-pack": "^1.0",
    "symfony/security-core": "4.3.*",
    "symfony/twig-bundle": "4.3.*",
    "symfony/webpack-encore-bundle": "^1.6",
    "symfony/yaml": "4.3.*",
    "ext-json": "*"
  },
  "require-dev": {
    "symfony/browser-kit": "4.3.*",
    "symfony/css-selector": "4.3.*",
    "symfony/debug-pack": "^1.0",
    "symfony/maker-bundle": "^1.13",
    "symfony/phpunit-bridge": "^4.3",
    "symfony/profiler-pack": "^1.0"
  },

這是測試數據庫連接是否正常工作的最佳時機:

php bin/console doctrine:query:sql "SELECT * FROM data.ACCOUNT FETCH FIRST 1 ROWS ONLY"

太好了,這會返回預期的結果。 現在我應該能夠導入這些表並生成實體。 所以我跟着這個幫助頁面

所以我試過:

php bin/console doctrine:mapping:import "App\Entity" annotation --path=src/Entity -vvv
Database does not have any mapping information.

該死的。 我也試過:

php bin/console doctrine:mapping:convert yml "App\Entity" --from-database --force                                                                                                                     
 [OK] No Metadata Classes to process.

我的學說配置:

doctrine:
  dbal:
    charset: UTF8
    logging: "%kernel.debug%"
    profiling: "%kernel.debug%"
    url: '%env(resolve:DATABASE_URL)%'
  orm:
    auto_generate_proxy_classes: true
    naming_strategy: doctrine.orm.naming_strategy.underscore
    auto_mapping: true
    mappings:
      App:
        is_bundle: false
        type: annotation
        dir: '%kernel.project_dir%/src/Entity'
        prefix: 'App\Entity'
        alias: App

.env:

DATABASE_URL=oci8://user:pass@host:1522/dev

我用“php bin/console c:c”刪除緩存后重試,甚至刪除了整個文件夾,但仍然無法正常工作。

感謝@emix,我們縮小了問題的范圍。 清除日志並重試后,我可以看到以下內容:

[2019-08-26 11:23:35] doctrine.DEBUG: SELECT * FROM sys.user_tables [] []

所以現在我知道學說正在嘗試從用戶那里找到當前擁有的表。 但是 data.ACCOUNT 表位於另一個模式中,並且該表被授予“選擇”權限。 該表不歸該用戶所有。

那么我如何告訴學說查看授予表的另一個模式?

我認為主要的問題是 Oracle 喜歡以大寫形式命名表和列。 因此,如果您有一個小寫的表,Oracle 會引用它,然后將其命名為“entity”.php 的 ENtity 非常困難!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM