2014-11-29 2 views
-2

Я делаю проект Django Python с помощью workbench MySQL. Первоначально я получаю следующее сообщение об ошибке при нажатии на одну из кнопок поиска в моем приложении:Mysql не обновляет значения в таблице

DatabaseError at /search/results/mobiles/ 
    (1214, "The used table type doesn't support FULLTEXT indexes") 

Затем я изменил движок базы данных от INNODB до MYISAM, путем выдачи запроса:

SET GLOBAL default_storage_engine=MYISAM; 

, который получил перед исходной ошибкой. Но теперь, если я вношу изменения в пользовательский интерфейс администратора Django (localhost: 8000/admin), значения таблицы MySQL не изменяются. Как исправить эту проблему?

Это мой search_category и search_result определение:

def search_in_category(request, slug): 
    # reset the search params, if present 
    try: 
     del request.session['search'] 
    except KeyError: 
     pass 

    return search_results(request, slug) 

def search_results(request, slug): 
category = get_object_or_404(Category, slug=slug) 
fields = list(category.field_set.all()) 
fields += list(Field.objects.filter(category=None)) 
fieldsLeft = [field.name for field in fields] 

if request.method == "POST" or 'search' in request.session: 
    ads = category.ad_set.filter(active=True, 
           expires_on__gt=datetime.datetime.now()) 
    # A request dictionary with keys defined for all 
    # fields in the category. 
    post = {} 
    if 'search' in request.session: 
     post.update(request.session['search']) 
    else: 
     post.update(request.POST) 

    sforms = prepare_sforms(fields, fieldsLeft, post) 

    isValid = True 

    for f in sforms: 
     # TODO: this assumes the form is not required 
     # (it's a search form after all) 
     if not f.is_valid() and not f.is_empty(): 
      isValid = False 

    if isValid: 
     if request.method == 'POST': 
      request.session['search'] = {} 
      request.session['search'].update(request.POST) 
      return redirect('classifieds_browse_search_results', slug=slug) 

     for f in sforms: 
      ads = f.filter(ads) 

     if ads.count() == 0: 
      return render_to_response('classifieds/list.html', 
             {'no_results': True, 
             'category': category}, 
             context_instance=RequestContext(request)) 
     else: 
      context = context_sortable(request, ads) 
      context['category'] = category 
      return render_to_response('classifieds/list.html', context, 
             context_instance=RequestContext(request)) 
else: 
    sforms = prepare_sforms(fields, fieldsLeft) 

return render_to_response('classifieds/search.html', 
          {'forms': sforms, 'category': category}, 
          context_instance=RequestContext(request)) 

ответ

0

Ошибка за себя, вы пытаетесь индексировать поля FULLTEXT в InnoDB. Задайте себе этот вопрос, как компьютер индексирует поле FULLTEXT?

InnoDB - отличный двигатель.

Удалите индекс из поля FULLTEXT, чтобы устранить проблему, возникающую на двигателе InnoDB.

+0

Я не использую любое поле FULLTEXT в моей таблице – Geetha

+0

какой вид использует «/ поиск/результаты/мобильные /» звонит что-то неправильно в БД – Rafael

0

после того, как альтер таблицу MYISAM ==>проблема, поднятая здесь

ваша таблица заблокирована, поэтому вы можете не в состоянии изменить значение таблицы с помощью администратора. сначала проверьте, что таблица заблокирована или не используется командой ниже.

show open tables WHERE Table LIKE 'tb_geetha' AND In_use > 0 

если locked затем mysql> UNLOCK TABLES;

+0

ли это работает? –

Смежные вопросы