2013-07-24 104 views
5

我安裝了幾個對我的Symfony 2的應用程序索納塔束(用戶,管理員等),但它們使用了一段時間後,我決定,我不喜歡他們,並希望將其刪除。刪除索納塔捆綁

我已經更新了我composer.json和AppKernel.php文件,刪除任何與索納塔。我還刪除了所有相關的路由,配置和安全文件條目。但是,我現在無法更新數據庫模式。

我碰到下面的錯誤,每當我運行一個:

[Doctrine\DBAL\DBALException]             
    Unknown column type "json" requested. Any Doctrine type that you use has to 
    be registered with \Doctrine\DBAL\Types\Type::addType(). You can get a lis 
    t of all the known types with \Doctrine\DBAL\Types\Type::getTypeMap(). If t 
    his error occurs during database introspection then you might have forgot t 
    o register all database types for a Doctrine Type. Use AbstractPlatform#reg 
    isterDoctrineTypeMapping() or have your custom types implement Type#getMapp 
    edDatabaseTypes(). If the type name is empty you might have a problem with 
    the cache or forgot some mapping information. 

我知道這是從學說配置索納塔束之一:

# Doctrine Configuration doctrine: 
dbal: 
    driver: %database_driver% 
    host:  %database_host% 
    port:  %database_port% 
    dbname: %database_name% 
    user:  %database_user% 
    password: %database_password% 
    charset: UTF8 
    #types: 
# json: Sonata\Doctrine\Types\JsonType 

正如你所看到的,我我評論說,我仍然繼續得到錯誤。

我無法追蹤這仍然引用的位置。

+0

不要使用'json'作爲實體中某一列的類型嗎? – cheesemacfly

回答

3

我正在這個錯誤(不同的列型),當我刪除從實體的字段並且除去類型定義本身。在我介紹了類型定義並只刪除了字段之後,沒有錯誤。我做了模式更新,然後我可以一起刪除類型。

你也許更好的解決辦法是完全刪除數據庫,並執行學說:從頭開始更新,那麼:架構。

+0

謝謝。丟棄和重新創建工作。 – Dan

+0

當奏鳴曲更新fos_user表以便接收json信息時發生這種情況。所以當我卸載奏鳴曲時,我開始出現這個錯誤,但是我所做的是將Sonata \ Doctrine \ Type \ JsonType創建爲我的Doctrine \ Type。並且它開始工作 –

0

安裝sonataadminbundle後我發生了這種情況,我卸載它後。

索納塔更新fos_user表以便它在「角色」列中接收json信息。所以當我卸載奏鳴曲時,我開始出現這個錯誤,但是我所做的是將Sonata \ Doctrine \ Type \ JsonType創建爲我的Doctrine \ Type。它開始工作。

9

我和大多數人有同樣的問題。過去安裝SonataAdminBundle時會遇到問題,但如果您安裝SonataAdminBundle並且無法使其正常工作,那可能就是問題所在。如果是這種情況,請參閱此鏈接:https://github.com/sonata-project/SonataAdminBundle/issues/811

在我的情況下,以及大多數其他人在這裏,刪除SonataAdminBundle時出現這種情況,由於某種原因,它像一股難聞的氣味一樣徘徊。我嘗試刪除數據庫,並在其他不起作用的地方重新恢復數據庫。

所以,下面的技巧似乎得到#學說配置

doctrine: 
    dbal: 
     ... 
     types: #this is about this line and line below 
      json:  \Doctrine\DBAL\Types\StringType  

絕對不是一個完美的解決方法,但應讓事情回到他們,直到你真正需要JsonType,你可以引入類型,然後的方式。

+2

JsonType在第2.6版原理中引入。在你升級到這個版本之前,正確的映射將是'json:Doctrine \ DBAL \ Types \ JsonArrayType'。 – Jonny