2013-07-24 26 views
5

Tôi đã cài đặt một số gói Sonata (người dùng, quản trị, v.v.) trên ứng dụng Symfony 2 nhưng sau khi sử dụng chúng một lúc, tôi quyết định không thích chúng và muốn xóa chúng.Xóa Gói Sonata

Tôi đã cập nhật tệp composer.json và AppKernel.php của mình, xóa mọi thứ liên quan đến Sonata. Tôi cũng đã xóa tất cả các tuyến đường, cấu hình và mục nhập tệp bảo mật có liên quan. Tuy nhiên, tôi đang gặp sự cố khi cập nhật lược đồ cơ sở dữ liệu của tôi ngay bây giờ.

tôi nhận được lỗi sau bất cứ khi nào tôi chạy một:

[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. 

Tôi biết điều này là từ cấu hình Doctrine cho một trong những bó Sonata:

# 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 

Như bạn thấy, tôi đã nhận xét điều này tôi vẫn tiếp tục gặp lỗi.

Tôi đang gặp sự cố khi theo dõi vị trí này vẫn được tham chiếu.

+0

Bạn không sử dụng 'json' làm loại trên một cột trong một thực thể của bạn? – cheesemacfly

Trả lời

3

Tôi đã nhận được lỗi này (loại cột khác nhau), khi tôi xóa một trường khỏi thực thể và xóa chính định nghĩa kiểu. Không có lỗi, sau khi tôi giới thiệu lại định nghĩa kiểu và chỉ loại bỏ trường. Tôi đã cập nhật lược đồ, sau đó tôi có thể loại bỏ tất cả các loại với nhau.

Có thể giải pháp tốt hơn cho bạn là thả toàn bộ cơ sở dữ liệu và thực hiện giáo lý: lược đồ: cập nhật từ đầu rồi.

+0

Cảm ơn. Rơi và tái tạo đã hoạt động. – Dan

+0

điều này xảy ra khi sonata cập nhật bảng fos_user để nhận thông tin json. Vì vậy, khi tôi gỡ bỏ cài đặt sonata, tôi bắt đầu có lỗi này nhưng những gì tôi đã làm là tạo ra Sonata \ Doctrine \ Type \ JsonType vào Doctrine \ Type của tôi. Và nó bắt đầu hoạt động –

0

Điều này xảy ra với tôi sau khi cài đặt sonataadminbundle và tôi đã gỡ cài đặt nó sau.

Cập nhật Sonata bảng fos_user để nhận thông tin json trong cột "vai trò". Vì vậy, khi tôi gỡ bỏ cài đặt sonata, tôi bắt đầu có lỗi này nhưng những gì tôi đã làm là tạo ra Sonata \ Doctrine \ Type \ JsonType vào Doctrine \ Type của tôi. Và nó bắt đầu hoạt động.

9

Tôi gặp vấn đề tương tự như hầu hết mọi người. Đã từng có vấn đề với việc cài đặt SonataAdminBundle, nhưng đó có thể là vấn đề nếu bạn cài đặt SonataAdminBundle và không thể làm việc gì. Nếu trường hợp đó xảy ra, hãy xem liên kết này: https://github.com/sonata-project/SonataAdminBundle/issues/811

Trong trường hợp của tôi, và hầu hết những người khác ở đây, điều này xảy ra khi xóa SonataAdminBundle, vì lý do nào đó, nó có mùi hôi. Tôi đã thử gỡ bỏ cơ sở dữ liệu và khôi phục lại nó trong số những thứ khác mà không làm việc.

Vì vậy, việc hack sau dường như để có đượC# Học thuyết Cấu hình

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

Chắc chắn không phải là một cách giải quyết hoàn hảo nhưng sẽ nhận được điều trở lại cách họ cho đến khi bạn thực sự cần JsonType và bạn có thể giới thiệu các loại sau đó.

+2

JsonType được giới thiệu trong Doctrine 2.6. Cho đến khi bạn có thể nâng cấp lên phiên bản này, ánh xạ chính xác sẽ là 'json: Doctrine \ DBAL \ Types \ JsonArrayType'. – Jonny

Các vấn đề liên quan