2017-06-13 73 views
0

我有CKAN真正的问题。每当我和我的CKAN 2.7实例运行在Ubuntu上我得到它开始了错误 - <type'exceptions.TypeError'>:预期的字符串或缓冲区

错误内部服务器错误中访问数据集 - :预期字符串或缓冲区

我也得到了同样的错误,如果我尝试添加一个数据集。任何援助将最受赞赏,因为我没有想法。

完整的日志消息我得到的是:

Error - <type 'exceptions.TypeError'>: expected string or buffer 
URL: http://155.245.98.207/ 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/weberror/errormiddleware.py', line 171 in __call__ 
    app_iter = self.application(environ, sr_checker) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ 
    resp = self.call_func(req, *args, **self.kwargs) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func 
    return self.func(req, *args, **kwargs) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/fanstatic/publisher.py', line 234 in __call__ 
    return request.get_response(self.app) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response 
    application, catch_exc_info=False) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application 
    app_iter = application(self.environ, start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 147 in __call__ 
    resp = self.call_func(req, *args, **self.kwargs) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/dec.py', line 208 in call_func 
    return self.func(req, *args, **kwargs) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/fanstatic/injector.py', line 54 in __call__ 
    response = request.get_response(self.app) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1053 in get_response 
    application, catch_exc_info=False) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/webob/request.py', line 1022 in call_application 
    app_iter = application(self.environ, start_response) 
File '/usr/lib/ckan/default/src/ckan/ckan/config/middleware/pylons_app.py', line 205 in inner 
    result = application(environ, start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/beaker/middleware.py', line 73 in __call__ 
    return self.app(environ, start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/beaker/middleware.py', line 155 in __call__ 
    return self.wrap_app(environ, session_start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/routes/middleware.py', line 131 in __call__ 
    response = self.app(environ, start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 125 in __call__ 
    response = self.dispatch(controller, environ, start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/wsgiapp.py', line 324 in dispatch 
    return controller(environ, start_response) 
File '/usr/lib/ckan/default/src/ckan/ckan/lib/base.py', line 297 in __call__ 
    res = WSGIController.__call__(self, environ, start_response) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 221 in __call__ 
    response = self._dispatch_call() 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 172 in _dispatch_call 
    response = self._inspect_call(func) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 107 in _inspect_call 
    result = self._perform_call(func, args) 
File '/usr/lib/ckan/default/local/lib/python2.7/site-packages/pylons/controllers/core.py', line 60 in _perform_call 
    return func(**args) 
File '/usr/lib/ckan/default/src/ckan/ckan/controllers/home.py', line 56 in index 
    context, data_dict) 
File '/usr/lib/ckan/default/src/ckan/ckan/logic/__init__.py', line 431 in wrapped 
    result = _action(context, data_dict, **kw) 
File '/usr/lib/ckan/default/src/ckan/ckan/logic/action/get.py', line 1865 in package_search 
    package_dict = json.loads(package_dict) 
File '/usr/lib/python2.7/json/__init__.py', line 338 in loads 
    return _default_decoder.decode(s) 
File '/usr/lib/python2.7/json/decoder.py', line 366 in decode 
    obj, end = self.raw_decode(s, idx=_w(s, 0).end()) 
TypeError: expected string or buffer 


CGI Variables 
------------- 
    CKAN_CURRENT_URL: '/' 
    CKAN_LANG: 'en' 
    CKAN_LANG_IS_DEFAULT: True 
    CONTENT_LENGTH: '0' 
    HTTP_ACCEPT: '*/*' 
    HTTP_HOST: '155.245.98.207' 
    HTTP_LANGUAGE: 'en' 
    HTTP_USER_AGENT: 'pk' 
    PATH_INFO: '/' 
    REMOTE_ADDR: '185.35.63.152' 
    REQUEST_METHOD: 'GET' 
    SERVER_NAME: '0.0.0.0' 
    SERVER_PORT: '80' 
    SERVER_PROTOCOL: 'HTTP/1.1' 


WSGI Variables 
-------------- 
    application: <fanstatic.publisher.Delegator object at 0x7faadcfea150> 
    beaker.cache: <beaker.cache.CacheManager object at 0x7faadcfea050> 
    beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7faadcf00d10>> 
    beaker.session: {'_accessed_time': 1497372408.247228, '_creation_time': 1497372408.247228} 
    ckan.app: 'pylons_app' 
    fanstatic.needed: <fanstatic.core.NeededResources object at 0x7faab491aad0> 
    paste.cookies: (<SimpleCookie: >, '') 
    paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x7faae64ab950> 
    paste.registry: <paste.registry.Registry object at 0x7faab413b050> 
    paste.throw_errors: True 
    pylons.action_method: <bound method HomeController.index of <ckan.controllers.home.HomeController object at 0x7faaaff0ecd0>> 
    pylons.controller: <ckan.controllers.home.HomeController object at 0x7faaaff0ecd0> 
    pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'} 
    pylons.pylons: <pylons.util.PylonsContext object at 0x7faaaff0ef90> 
    pylons.routes_dict: {'action': u'index', 'controller': u'home'} 
    repoze.who.api: <repoze.who.api.API object at 0x7faab445a350> 
    repoze.who.logger: <logging.Logger object at 0x7faadd054dd0> 
    repoze.who.plugins: {'ckan.lib.authenticator:UsernamePasswordAuthenticator': <ckan.lib.authenticator.UsernamePasswordAuthenticator object at 0x7faadcf00b50>, 'friendlyform': <FriendlyFormPlugin 140371906939664>, 'auth_tkt': <CkanAuthTktCookiePlugin 140371905678864>} 
    routes.route: <routes.route.Route object at 0x7faadcf97110> 
    routes.url: <routes.util.URLGenerator object at 0x7faab491a4d0> 
    webob._parsed_query_vars: (GET([]), '') 
    webob.adhoc_attrs: {'response': <Response at 0x7faab491aa90 200 OK>, 'language': 'en-us'} 
    wsgi process: 'Multithreaded' 
    wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7faab491a4d0>, {'action': u'index', 'controller': u'home'}) 
------------------------------------------------------------ 
2017-06-13 17:46:48,266 INFO [ckan.lib.base]/render time 0.016 seconds 

模式的XML文件是:

<?xml version="1.0" encoding="UTF-8" ?> 
<!-- 
Licensed to the Apache Software Foundation (ASF) under one or more 
contributor license agreements. See the NOTICE file distributed with 
this work for additional information regarding copyright ownership. 
The ASF licenses this file to You under the Apache License, Version 2.0 
(the "License"); you may not use this file except in compliance with 
the License. You may obtain a copy of the License at 

    http://www.apache.org/licenses/LICENSE-2.0 

Unless required by applicable law or agreed to in writing, software 
distributed under the License is distributed on an "AS IS" BASIS, 
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
See the License for the specific language governing permissions and 
limitations under the License. 
--> 

<!-- 
    NB Please copy changes to this file into the multilingual schema: 
     ckanext/multilingual/solr/schema.xml 
--> 

<!-- We update the version when there is a backward-incompatible change to this 
schema. In this case the version should be set to the next CKAN version number. 
(x.y but not x.y.z since it needs to be a float) --> 
<schema name="ckan" version="2.3"> 

<types> 
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> 
    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" omitNorms="true"/> 
    <fieldtype name="binary" class="solr.BinaryField"/> 
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="date" class="solr.TrieDateField" omitNorms="true" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true" precisionStep="6" positionIncrementGap="0"/> 

    <fieldType name="tdates" class="solr.TrieDateField" precisionStep="7" positionIncrementGap="0" multiValued="true"/> 
    <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true" multiValued="true"/> 
    <fieldType name="tints" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0" multiValued="true"/> 
    <fieldType name="tfloats" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0" multiValued="true"/> 
    <fieldType name="tlongs" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0" multiValued="true"/> 
    <fieldType name="tdoubles" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0" multiValued="true"/> 

    <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
      <filter class="solr.ASCIIFoldingFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
      <filter class="solr.SnowballPorterFilterFactory" language="English" protected="protwords.txt"/> 
      <filter class="solr.ASCIIFoldingFilterFactory"/> 
     </analyzer> 
    </fieldType> 


    <!-- A general unstemmed text field - good if one does not know the language of the field --> 
    <fieldType name="textgen" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="0"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
      <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
      <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
      <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="0"/> 
      <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 
</types> 


<fields> 
    <field name="index_id" type="string" indexed="true" stored="true" required="true" /> 
    <field name="id" type="string" indexed="true" stored="true" required="true" /> 
    <field name="site_id" type="string" indexed="true" stored="true" required="true" /> 
    <field name="title" type="text" indexed="true" stored="true" /> 
    <field name="entity_type" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="dataset_type" type="string" indexed="true" stored="true" /> 
    <field name="state" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="name" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="revision_id" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="version" type="string" indexed="true" stored="true" /> 
    <field name="url" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="ckan_url" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="download_url" type="string" indexed="true" stored="true" omitNorms="true" /> 
    <field name="notes" type="text" indexed="true" stored="true"/> 
    <field name="author" type="textgen" indexed="true" stored="true" /> 
    <field name="author_email" type="textgen" indexed="true" stored="true" /> 
    <field name="maintainer" type="textgen" indexed="true" stored="true" /> 
    <field name="maintainer_email" type="textgen" indexed="true" stored="true" /> 
    <field name="license" type="string" indexed="true" stored="true" /> 
    <field name="license_id" type="string" indexed="true" stored="true" /> 
    <field name="ratings_count" type="int" indexed="true" stored="false" /> 
    <field name="ratings_average" type="float" indexed="true" stored="false" /> 
    <field name="tags" type="string" indexed="true" stored="true" multiValued="true"/> 
    <field name="groups" type="string" indexed="true" stored="true" multiValued="true"/> 
    <field name="organization" type="string" indexed="true" stored="true" multiValued="false"/> 

    <field name="capacity" type="string" indexed="true" stored="true" multiValued="false"/> 

    <field name="res_name" type="textgen" indexed="true" stored="true" multiValued="true" /> 
    <field name="res_description" type="textgen" indexed="true" stored="true" multiValued="true"/> 
    <field name="res_format" type="string" indexed="true" stored="true" multiValued="true"/> 
    <field name="res_url" type="string" indexed="true" stored="true" multiValued="true"/> 
    <field name="res_type" type="string" indexed="true" stored="true" multiValued="true"/> 

    <!-- catchall field, containing all other searchable text fields (implemented 
     via copyField further on in this schema --> 
    <field name="text" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="urls" type="text" indexed="true" stored="false" multiValued="true"/> 

    <field name="depends_on" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="dependency_of" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="derives_from" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="has_derivation" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="links_to" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="linked_from" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="child_of" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="parent_of" type="text" indexed="true" stored="false" multiValued="true"/> 
    <field name="views_total" type="int" indexed="true" stored="false"/> 
    <field name="views_recent" type="int" indexed="true" stored="false"/> 
    <field name="resources_accessed_total" type="int" indexed="true" stored="false"/> 
    <field name="resources_accessed_recent" type="int" indexed="true" stored="false"/> 

    <field name="metadata_created" type="date" indexed="true" stored="true" multiValued="false"/> 
    <field name="metadata_modified" type="date" indexed="true" stored="true" multiValued="false"/> 

    <field name="indexed_ts" type="date" indexed="true" stored="true" default="NOW" multiValued="false"/> 

    <!-- Copy the title field into titleString, and treat as a string 
     (rather than text type). This allows us to sort on the titleString --> 
    <field name="title_string" type="string" indexed="true" stored="false" /> 

    <field name="data_dict" type="string" indexed="false" stored="true" /> 
    <field name="validated_data_dict" type="string" indexed="false" stored="true" /> 

    <field name="_version_" type="string" indexed="true" stored="true"/> 

    <dynamicField name="*_date" type="date" indexed="true" stored="true" multiValued="false"/> 

    <dynamicField name="extras_*" type="text" indexed="true" stored="true" multiValued="false"/> 
    <dynamicField name="res_extras_*" type="text" indexed="true" stored="true" multiValued="true"/> 
    <dynamicField name="vocab_*" type="string" indexed="true" stored="true" multiValued="true"/> 
    <dynamicField name="*" type="string" indexed="true" stored="false"/> 
</fields> 

<uniqueKey>index_id</uniqueKey> 
<defaultSearchField>text</defaultSearchField> 
<solrQueryParser defaultOperator="AND"/> 

<copyField source="url" dest="urls"/> 
<copyField source="ckan_url" dest="urls"/> 
<copyField source="download_url" dest="urls"/> 
<copyField source="res_url" dest="urls"/> 
<copyField source="extras_*" dest="text"/> 
<copyField source="res_extras_*" dest="text"/> 
<copyField source="vocab_*" dest="text"/> 
<copyField source="urls" dest="text"/> 
<copyField source="name" dest="text"/> 
<copyField source="title" dest="text"/> 
<copyField source="text" dest="text"/> 
<copyField source="license" dest="text"/> 
<copyField source="notes" dest="text"/> 
<copyField source="tags" dest="text"/> 
<copyField source="groups" dest="text"/> 
<copyField source="organization" dest="text"/> 
<copyField source="res_name" dest="text"/> 
<copyField source="res_description" dest="text"/> 
<copyField source="maintainer" dest="text"/> 
<copyField source="author" dest="text"/> 
<copyField source="capacity" dest="text"/> 
<copyField source="metadata_modified" dest="date"/> 

</schema> 

回答

0

它说,通过SOLR返回的package_dict不是JSON,它必须这样做。

  • 您是否在使用推荐的SOLR版本?
  • 你试过重新索引所有数据集吗? paster --plugin=ckan search-index rebuild --config=/etc/ckan/std/std.ini

如果这不起作用,那么我建议您深入了解当/usr/lib/ckan/default/src/ckan/ckan/logic/action/get.py中发生错误时发生了什么。看看package_dictdata_source的值是多少,使用pdb或print语句,使用paster运行ckan。

相关问题