Задать вопрос
seregazolotaryow64
@seregazolotaryow64
IT Специалист и самоучка

Как решить проблему с ошибкой 1062?

Добрый вечер!
Пришёл сюда за вашей помощью!
Возникла серьёзная проблема. В основном шаблоне сайта, реализуемом в Yii прописана система сбора метрики посещаемости:
<?php
 //Здесь мы генерируем данные о посещаемости.
if(isset($_COOKIE['site_cookie'])){
  $site=trim($_COOKIE['site_cookie']);
  if($site=="OK! 200"){
    if(isset($_SERVER['HTTP_REFERER'])) {
      $userdata=array(
        'ip'=>$_SERVER['REMOTE_ADDR'],
        'ua'=>$_SERVER['HTTP_USER_AGENT'],
        'source'=>getenv('HTTP_REFERER'),
        'page'=>"https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'],
        'resource'=>"Добрые-Взрослые"
      );
    }
    else{
      $userdata=array(
        'ip'=>$_SERVER['REMOTE_ADDR'],
        'ua'=>$_SERVER['HTTP_USER_AGENT'],
        'source'=>"default",
        'page'=>"https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'],
        'resource'=>"Добрые-Взрослые"
      );
    }


    $ip_data = @json_decode(file_get_contents("http://ip-api.com/json/".$userdata['ip']));
    if($ip_data && $ip_data->country != null){
       $city = $ip_data->city;
       $region = $ip_data->regionName;
       $country = $ip_data->country;
    }



    $db=Yii::app()->db->createCommand();

    $db->insert("statistic",array(
        "date"=>date('Y-m-d H:i:s'),
        "ip"=>$userdata['ip'],
        "city"=>$city,
        "region"=>$region,
        "country"=>$country,
        "ua"=>$userdata['ua'],
        "source"=>$userdata['source'],
        "page"=>$userdata['page'],
        "month"=>date('m'),
        "year"=>date('Y'),
        "week"=>date('W'),
        "resource"=>$userdata['resource']
    ));

  }
}
else{

}

?>

А сама база данных о посещаемости выглядит следующим образом:
5cc08c8edf0e1442311037.png
И почему-то заказчику не устроила ошибка 1062 , возникаемая при множественных переходах между страницами и успешных добавлениях в базу информации о посещаемости:
5cc08d3d48560890556002.png

В Интернете я нашел множество методов решения этой проблемы, выполнил несколько методов и ничего не помогло.
Пробовал сделать столбец с AUTO_INCRIMENT, согласно стэкаверфловским инструкциям и ничего не подействовало...
Из-за чего может быть ошибка? Как по-реальному решить эту проблему(даже, ошибка была внутри MySQL-типа DATETIME)? Что с этим делать?
Заранее благодарю!
  • Вопрос задан
  • 123 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега PHP
Сделайте индекс по дате неуникальным:
ALTER TABLE `statistic` DROP INDEX  `date`;
ALTER TABLE `statistic` ADD INDEX  `date` (`date`);
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
И не говорите, что за заказчик пошёл. Уже ошибки в работе сайта его не устраивают. Ну не может же один человек за секунду два раза на страницы сайта зайти. Или может? Но зачем же вы тогда такой первичный ключ накрутили?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы