L'importation de 50K+ Enregistrements dans MySQL Donne erreur Générale: 1390 instruction Préparée contient trop d'espaces réservés

Quelqu'un a déjà rencontré ce message d'erreur: erreur Générale: 1390 instruction Préparée contient trop d'espaces réservés

J'ai juste fait un import via SequelPro de plus de 50 000 enregistrements et maintenant, quand je vais à la consultation de ces dossiers, à mon avis (Laravel 4) - je obtenir de l'erreur: 1390 instruction Préparée contient trop d'espaces réservés.

Ci-dessous la méthode index() dans mon AdminNotesController.php fichier est quelle est la génération de la requête et le rendu de la vue.

public function index()
{
$created_at_value = Input::get('created_at_value');
$note_types_value = Input::get('note_types_value');
$contact_names_value = Input::get('contact_names_value');
$user_names_value = Input::get('user_names_value');
$account_managers_value = Input::get('account_managers_value');
if (is_null($created_at_value)) $created_at_value = DB::table('notes')->lists('created_at');
if (is_null($note_types_value)) $note_types_value = DB::table('note_types')->lists('type');
if (is_null($contact_names_value)) $contact_names_value = DB::table('contacts')->select(DB::raw('CONCAT(first_name," ",last_name) as cname'))->lists('cname');
if (is_null($user_names_value)) $user_names_value = DB::table('users')->select(DB::raw('CONCAT(first_name," ",last_name) as uname'))->lists('uname');
// In the view, there is a dropdown box, that allows the user to select the amount of records to show per page. Retrieve that value or set a default.
$perPage = Input::get('perPage', 10);
// This code retrieves the order from the session that has been selected by the user by clicking on a table column title. The value is placed in the session via the getOrder() method and is used later in the Eloquent query and joins.
$order = Session::get('account.order', 'company_name.asc');
$order = explode('.', $order);
$notes_query = Note::leftJoin('note_types', 'note_types.id', '=', 'notes.note_type_id')
->leftJoin('users', 'users.id', '=', 'notes.user_id')
->leftJoin('contacts', 'contacts.id', '=', 'notes.contact_id')
->orderBy($order[0], $order[1])
->select(array('notes.*', DB::raw('notes.id as nid')));
if (!empty($created_at_value)) $notes_query = $notes_query->whereIn('notes.created_at', $created_at_value);
$notes = $notes_query->whereIn('note_types.type', $note_types_value)
->whereIn(DB::raw('CONCAT(contacts.first_name," ",contacts.last_name)'), $contact_names_value)
->whereIn(DB::raw('CONCAT(users.first_name," ",users.last_name)'), $user_names_value)
->paginate($perPage)->appends(array('created_at_value' => Input::get('created_at_value'), 'note_types_value' => Input::get('note_types_value'), 'contact_names_value' => Input::get('contact_names_value'), 'user_names_value' => Input::get('user_names_value')));
$notes_trash = Note::onlyTrashed()
->leftJoin('note_types', 'note_types.id', '=', 'notes.note_type_id')
->leftJoin('users', 'users.id', '=', 'notes.user_id')
->leftJoin('contacts', 'contacts.id', '=', 'notes.contact_id')
->orderBy($order[0], $order[1])
->select(array('notes.*', DB::raw('notes.id as nid')))
->get();
$this->layout->content = View::make('admin.notes.index', array(
'notes'             => $notes,
'created_at'        => DB::table('notes')->lists('created_at', 'created_at'),
'note_types'        => DB::table('note_types')->lists('type', 'type'),
'contacts'          => DB::table('contacts')->select(DB::raw('CONCAT(first_name," ",last_name) as cname'))->lists('cname', 'cname'),
'accounts'          => Account::lists('company_name', 'company_name'),
'users'             => DB::table('users')->select(DB::raw('CONCAT(first_name," ",last_name) as uname'))->lists('uname', 'uname'),
'notes_trash'       => $notes_trash,
'perPage'           => $perPage
));
}

Tout conseil serait apprécié. Merci.

  • Si vous importez permet de dire que 100 enregistrements. Il fonctionne ok?
  • en fonction de l'erreur (je ne vais même pas essayer de regarder cette ÉNORME morceau de code), il semble que vous sont en train de préparer une requête avec X des espaces réservés et simplement les valeurs de Y, avec Y < X.
  • Oui, il fonctionne très bien.
  • Je ne suis pas sûr de ce que tu veux dire?
  • si vous importez morceau sage, il fonctionne. voici un exemple simple foreach (array_chunk($data,1000) as $t) { DB::table('table-name')->insert($t); }
  • Je voudrais juste importer ce que les morceaux de 500 pour être sûr.

InformationsquelleAutor Gareth Daine | 2013-08-07