12
votes

Données de maréchal trop courtes

Mon application nécessite de conserver des objets de données importants en session. Il existe comme 3-4 objets de données créés chacun en analysant un CSV contenant 150 x 20 cellules ayant des chaînes de 3-4 caractères. Mon application montre cette erreur - "Données de maréchal trop courtes". J'ai essayé cela-

  • Suppression de la vieille table de session.
  • Suppression de l'ancienne migration pour la table de session.
  • Création d'une nouvelle migration en utilisant Rake DB: Sessions: Créez .
  • Modification manuelle de la migration, modifie texte: données sur longtext: données .
  • Exécution de la migration à l'aide de Rake DB: migrer .

    Autres détails de l'application -

    dans la vue "Index.html.erb" - Il existe un lien qui rend l'appel AJAX à une action dans le contrôleur, cette action analyse le gros fichier CSV et en fait un objet. Cet objet est stocké en session.

    journal d'erreur xxx

    demande

    paramètres:

    Aucun < / p>

    Afficher le vidage de la session


    réponse

    en-têtes: xxx

    ` < / p>


0 commentaires

6 Réponses :


6
votes

Qu'est-ce qui s'affiche dans le journal des erreurs après avoir accès à la page qui donne cette erreur?

Aussi, quel est le type de colonne pour vos informations de session dans MySQL? Texte? P>

---------------- éditez ci-dessous ----------------- P>

OK, comme Loin que j'ai pu déterminer, cette erreur signifie généralement que la taille du contenu que vous poussez dans la session est trop grande pour la colonne MySQL. La solution la plus courante citée semble indiquer une solution de modification de la colonne du texte en longtext. P>

Essayez d'exécuter quelque chose comme celui-ci dans MySQL et voyez s'il vous donne une amélioration: P>

ALTER TABLE sessions CHANGE COLUMN data data LONGTEXT


0 commentaires

8
votes

Au lieu de la table manuelle Alter, vous pouvez également faire une migration avec une limite, comme celle-ci:

class FixSessionStore < ActiveRecord::Migration
  def self.up
    change_column :sessions, :data, :text, :limit => 4.megabytes
  end

  def self.down
  end
end


0 commentaires

3
votes

Les solutions précédentes ne fonctionnaient pas pour moi. Ce qui a travaillé pour moi était d'effacer le cache de la session avec

rake db:sessions:clear


1 commentaires

Cela doit être fait pour réduire les sessions corrompues créées avant de prolonger la taille de la colonne Session.Data. MySQL tronque silencieusement.



7
votes

in rails 4 Mode de développement J'avais la même erreur et la solution était la suivante:

Supprimer tous les fichiers de cache de / TMP / cache / actif dossier.

(malheureusement râblant des actifs: Nettoyer Je n'ai tout simplement pas résolu ce problème.)


0 commentaires

11
votes

J'ai rencontré le même problème.

My Rails La version est 4.1.4. P>

J'ai résolu ce problème en exécutant: P>

rake tmp:clear                                      


0 commentaires

0
votes

Cela a fonctionné pour moi xxx


0 commentaires