Не нужно передавать $ http в качестве параметра функции, так как вы уже ввели $ http в качестве зависимости от вашего контроллера. Я внесла некоторые изменения в код. Пожалуйста, проверьте, что это сработает для вас.
var gitHub = angular.module('gitHub', []);
gitHub.controller('mainController', ['$scope', '$http', function ($scope, $http) {
$scope.user = '';
$scope.getUserInfo = function() {
$http.get('https://api.github.com/users')
.success(function (result) {
$scope.user = result;
console.log(result);
});
};
$scope.getUserInfo();
}]);
Иногда, когда эта ошибка происходит с временными таблицами:
#126 - Incorrect key file for table '/tmp/#sql_64d_0.MYI'; try to repair it
Это может быть из-за нехватки места в папке /tmp
. На некоторых установках Linux /tmp
находится в своем собственном разделе и не имеет большого пространства - большие запросы MySQL будут заполнять его.
Вы можете использовать df -h
, чтобы проверить, находится ли \tmp
в его собственный раздел и сколько места выделяется для него.
Если он находится в своем собственном разделе и не хватает места, вы можете:
(a) изменить / tmp, чтобы его парирование имеет больший объем (либо перераспределением, либо перемещением его в главный раздел - например, см. здесь ) (b) изменение конфигурации MySql, так что он использует [temp folder] другой раздел, например /var/tmp
Я испытываю ту же проблему.
Вот мое решение: 1. Не используйте «select *». Просто выберите поле, которое вам нужно. 2. Разделите запрос. Если выбранное вами поле слишком велико, результатом может быть разделение на какой-то запрос. Вы можете «array_merge ()» результат позже, если вы хотите, чтобы переменная, содержащая результат, не была изменена.
В моем случае я разбил запрос на 5 запросов, затем массив объединил его с помощью PHP.
Проблема лежит на сервере mysql. Это просто то, что разработчик приложений (такой, как я, я) не имеет преувеличения.
У меня была эта проблема с запросом на таблицу с 500K + записями. Это давало мне тот же самый точный тип ошибки, указывающий на файл .MYI в каталоге / tmp, который редко присутствовал при проверке. Я уже увеличил размеры файлов кучи и временных файлов в файле /etc/my.cnf.
Проблема с запросом заключалась в том, что он действительно содержал предложение ORDER в конце, опустив его, он запустил запрос без ошибок. У него также был LIMIT. Я пытался посмотреть последние 5 записей в таблице. С включением предложения ORDER он задохнулся и дал ошибку.
Что происходит, так это то, что mysqld создавал внутреннюю временную таблицу со всеми записями из гигантской таблицы, чтобы применить ORDER.
Способ, которым я обходился, - применить дополнительное условие WHERE, ограничив записи с гигантской таблицы на какой-то меньший набор. Мне удобно иметь поле datetime для фильтрации.
Надеюсь, это поможет кому-то.
Вы можете найти, что работает «ANALYZE TABLE».
Мы столкнулись с этой проблемой, внезапно появившейся на большой таблице (~ 100M строк), и MySQL попыталась использовать / tmp для записи временной таблицы более 1 ГБ , который не удался, поскольку / tmp был ограничен ~ 600M.
Оказалось, что статистика таблицы InnoDB была довольно устаревшей. После запуска «ANALYZE TABLE ...» статистика была обновлена, и проблема была устранена. С более точной статистикой MySQL смог оптимизировать запрос правильно, и большой файл tmp больше не требовался.
Мы периодически запускаем «mysqlcheck -Aa», чтобы сохранить всю таблицу статистики свежей.
Только увеличивайте файл tmp, потому что mysql не имеет места в нем, для запросов ...
mount -o remount,size=[NEW MAX SIZE HERE] tmpfs /tmp
Ссылка ссылки:
Проверьте доступное пространство MySQL tmpdir (/ tmp в вашем случае) во время выполнения запросов, поскольку он может съесть сотни МБ при работе с большими таблицами. Что-то вроде этого сработало для меня:
$ while true; do df -h /tmp; sleep .5; done
watch -n0.5 df -h /tmp
– Sam
21 January 2013 в 13:04
указательные клавиши для одной из трех таблиц могут быть плохими, попробуйте запустить команду восстановления для всех 3 таблиц.
В Unix MySQL использует значение переменной среды TMPDIR как путь к каталогу, в котором хранятся временные файлы. Если TMPDIR не установлен, MySQL использует стандартную систему, которая обычно равна / tmp, / var / tmp или /usr/tmp.
. В Windows, Netware и OS2 MySQL проверяет порядок значений переменные среды TMPDIR, TEMP и TMP. Для первого найденного набора MySQL использует его и не проверяет оставшиеся. Если ни один из TMPDIR, TEMP или TMP не установлен, MySQL использует системную ОС Windows по умолчанию, обычно это C: \ windows \ temp.
Если файловая система, содержащая ваш временный каталог файлов, слишком мала, вы может использовать опцию -tmpdir для mysqld, чтобы указать каталог в файловой системе, где у вас достаточно места.
В MySQL 5.0 параметр -tmpdir может быть установлен в список из нескольких путей, которые используется в круговом стиле. Пути должны быть разделены символами двоеточия («:») на символах Unix и с запятой («;») на Windows, NetWare и OS / 2.
Использование ключевого слова EXPLAIN может помочь выяснить, как наилучшим образом оптимизировать этот запрос. По сути, вам нужно как можно быстрее установить набор результатов как можно меньше. Если у вас есть результирующий набор из каждой строки в имени core_username до конца, когда вы его заказываете, вы рискуете ... этим.
Если вы можете сделать заказ только на core_username без проблем, вы может захотеть получить строку min () в качестве подзапроса.
У меня была аналогичная проблема. В моем случае проблема возникла из-за неправильного владельца / разрешения. Мне просто пришлось сменить владельца в моем каталоге данных на пользователя mysql, и это решило проблему.
запустите это
REPAIR TABLE `core_username`,`core_site`,`core_person`;
или выполните следующее:
select * from (
SELECT * FROM `core_username`
INNER JOIN `core_person` ON (`core_username`.`person_id` = `core_person`.`id`)
INNER JOIN `core_site` ON (`core_username`.`site_id` = `core_site`.`id`)
LIMIT 1)
ORDER BY `name` ASC
while true; do df -h /tmp; sleep 3; done
во время запуска скрипта, чтобы увидеть, сколько места используется временными таблицами. – biniam_Ethiopia 5 November 2015 в 16:00