База данных не работает после обновления MAMP [дубликат]

Ответ коротким: Date возвращается GMT, если не указано иное. Вы можете установить часовой пояс, чтобы получить правильную дату. Если вы планируете использовать дату в приложении для установки чего-либо (например, localNotification time или Event), вам нужно будет сделать что-то особенное с датой, потому что если вы установите дату в iPhone, она будет установлена ​​как GMT и будет выключена на несколько часов. (в вашем случае 4 часа). Я делаю то, что я только что описал в одном из моих приложений.

Я сделал беспорядок, пытаясь заставить это работать правильно, не отпуская часы. Это была огромная PITA, чтобы разобраться, но теперь она работает. Я скопировал, вставил и отредактировал свой код для совместного использования. Опять же, его беспорядок, но он работает! Команда pickerChanged получает информацию от UIDatePicker

. Используя приведенный ниже код. Чтобы ответить на ваш вопрос, вы можете остановиться на «destinationDate». Это вернет вам исправленное время для вашего текущего часового пояса. Я просто предоставил дополнительный взнос, когда вы пытались использовать дату на телефоне где-то.

ПРИМЕЧАНИЕ. Для быстрого примера я помещаю напоминание о событии в ту же функцию, что и datepicker, вы НЕ хотите делать что в противном случае у вас будет много напоминаний, установленных каждый раз, когда колесики прокручиваются в datepicker.

Код ниже.

 - (void)pickerChanged:(id)sender
    {

        NSLog(@"value: %@",[sender date]);

        NSDate* date= [sender date]; 
        NSDateFormatter *formatter=[[[NSDateFormatter alloc]init]autorelease]; 
        [formatter setDateFormat:@"MM/dd/yyyy hh:mm:ss a"];
        [formatter setTimeZone:[NSTimeZone systemTimeZone]];

        [formatter setTimeStyle:NSDateFormatterLongStyle]; 

        NSString *dateSelected =[formatter stringFromDate:date]; 

        NSString *timeZone = [dateSelected substringFromIndex:12];



    NSTimeZone* destinationTimeZone = [NSTimeZone systemTimeZone];

    //here we have to get the time difference between GMT and the current users Date (its in seconds)
        NSInteger destinationGMTOffset = [destinationTimeZone secondsFromGMTForDate:date];

    //need to reverse offset so its correct when we put it in the calendar
        correctedTimeForCalendarEvent = destinationGMTOffset + (2*(-1*destinationGMTOffset));

    //date to enter into calendar (we will use the correctedTimeForCalendarEvent to correct the time otherwise it will be off by a few hours )
       NSDate * destinationDate = [[[NSDate alloc] initWithTimeInterval:destinationGMTOffset sinceDate:date] autorelease];
        NSDate * dateForReminder = destinationDate;
        // return destinationDate;
        NSLog(@"value: %@ - %@",destinationDate,dateForReminder);

//DO NOT put this code in this same function this is for a quick example only on StackOverflow
//otherwise you will have reminders set everytime the users scrolled to a different time
    //set event reminder
    //make sure to import EventKit framework

        EKEventStore *eventDB = [[[EKEventStore alloc] init]autorelease];
        EKEvent *myEvent  = [EKEvent eventWithEventStore:eventDB];
        NSString * eventTitle = [NSString stringWithFormat:@"%@ - %@",app.dealerBusinessName,serviceOrComments.text];
        myEvent.title = eventTitle;

    //double check date one more time
        NSLog(@"value: %@",destinationDate);

    //set event time frame (1 hour) the "initWithTimeInterval" is where we account for the users timezone by adding the correctedTime from GMT to the calendar time ( so its not off by hours when entering into calendar)
        myEvent.startDate = [[[NSDate alloc] initWithTimeInterval:correctedTimeForCalendarEvent sinceDate:destinationDate ]autorelease];
        myEvent.endDate   = [[[NSDate alloc] initWithTimeInterval:3600 sinceDate:myEvent.startDate]autorelease];
        myEvent.allDay = NO;

    //set event reminders 1 day and 1 hour before
        myAlarmsArray = [[[NSMutableArray alloc] init] autorelease];
        EKAlarm *alarm1 = [EKAlarm alarmWithRelativeOffset:-3600]; // 1 Hour
        EKAlarm *alarm2 = [EKAlarm alarmWithRelativeOffset:-86400]; // 1 Day
        [myAlarmsArray addObject:alarm1];
        [myAlarmsArray addObject:alarm2];
        myEvent.alarms = myAlarmsArray;



        [myEvent setCalendar:[eventDB defaultCalendarForNewEvents]];

        NSError *err;

        [eventDB saveEvent:myEvent span:EKSpanThisEvent error:&err]; 

        if (err == noErr) {
            //no error, but do not show alert because we do that below.
        }

    }
27
задан mins 6 April 2015 в 18:43
поделиться

17 ответов

Причина, по которой я столкнулся с этим, состояла в том, что у меня было два файла "models.py", которые содержали несколько разных полей. Я разрешил это:

  1. удалив один из файлов models.py
  2. , исправив ссылки на удаленный файл
  3. , затем запустив manage.py syncdb
0
ответ дан Amey 16 August 2018 в 10:49
поделиться

У меня была такая же проблема. Это произошло после ошибки запуска Windows, похоже, из-за этого некоторые файлы были повреждены. Я снова импортировал БД из сохраненного скрипта, и он отлично работает.

0
ответ дан Ayman Al-Absi 16 August 2018 в 10:49
поделиться

У меня возникла эта проблема из-за срабатывания триггера. Работа после удаления триггера.

0
ответ дан DauleDK 16 August 2018 в 10:49
поделиться

В моем случае параметр MySQL; lower_case_table_names был настроен = 0.

Он вызывает запросы, связанные с использованием верхних регистров, не будет работать.

0
ответ дан hiropon 16 August 2018 в 10:49
поделиться

В моем случае я выполнил эту команду, даже если таблица не была видна в PhpMyAdmin:

DROP TABLE mytable

, затем

CREATE TABLE....

Работал для меня!

4
ответ дан Jim 007 16 August 2018 в 10:49
поделиться

Для меня это была проблема с верхним / нижним регистром. Я должен был убедиться, что имя файла таблицы, сопоставленное в запросе удаления, таблица notifications не совпадает с Notifications. Я исправил это, сопоставив случай с именем таблицы с запросом и сообщением MySQLWorkbench.

Что странно, так это то, что эта ошибка появилась в обработанном SQL-заявлении. Не знаю, что вызвало чувствительность этого случая. Возможно, обновление AWS RDS.

0
ответ дан Kahitarich 16 August 2018 в 10:49
поделиться

Я получил эту проблему после копирования файла таблицы mytable.idb из другого места. Чтобы устранить эту проблему, я сделал следующее:

ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

Скопировать файл mytable.idb

ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

Перезапустить MySql

0
ответ дан l0pan 16 August 2018 в 10:49
поделиться

Проверьте имена файлов. Возможно, вам понадобится создать новую базу данных в phpmyadmin, которая соответствует базе данных, которую вы пытаетесь импортировать.

3
ответ дан Mayur Birari 16 August 2018 в 10:49
поделиться
  • 1
    Имена файлов не имеют значения. – matthias krull 21 November 2012 в 17:49
  • 2
    проблема уже решена, спасибо в любом случае – Shaheer 22 November 2012 в 08:14
  • 3
    @Shaheer Решил для вас, но как насчет остальных? – Chris Harrison 10 March 2013 в 05:30
  • 4
    @Chris, проверьте ответ, который я отметил как выбранный :) – Shaheer 12 March 2013 в 07:31

Перезагрузка MySQL работает отлично для меня.

4
ответ дан Muhammad Usman 16 August 2018 в 10:49
поделиться

Имена столбцов должны быть уникальными в таблице. Вы не можете иметь два столбца с именем asd в одной таблице.

0
ответ дан Oswald 16 August 2018 в 10:49
поделиться
  • 1
    Я думаю, что это связано только с анонимизацией. – Gumbo 14 June 2011 в 11:33
  • 2
    он не работал, я попробовал sddd для второго имени столбца, но все тот же эффект – Shaheer 14 June 2011 в 11:34
  • 3
    @gumbo, анонимизация? что это? – Shaheer 14 June 2011 в 11:34
  • 4
    Вы создали базу данных / схему ddd? – Tommy 14 June 2011 в 11:36
  • 5
    @ user503148: Анонимизация - это процесс анонимности данных. Эти имена в базе данных / таблице / строке не те, которые вы на самом деле используете, не так ли? – Gumbo 14 June 2011 в 11:37

У меня была такая же проблема и я не могу получить хороший совет для этого через Интернет, поэтому я поделился этим для вас и для всех, кто нуждается.

В моей ситуации я копирую базу данных (все файлы: frm, myd) в папку данных в папке данных MySQL (используя Wamp at home). Все было в порядке, пока я не хочу создать таблицу и имею ошибку #1146 Table '...' doesn't exist!.

Я использую Wamp 2.1 с MySQL версии 5.5.16.

Мое решение:

  1. Экспортировать базу данных в файл;
  2. проверить, действительно ли экспортированный файл в порядке !!;
  3. удалить базу данных, где у меня есть проблемы;
  4. создать новую базу данных с тем же именем, что и последний,
  5. импортировать файл в базу данных.

ДЛЯ МЕНЯ РЕШЕНА ПРОБЛЕМА. Теперь я могу создавать таблицы снова без ошибок.

11
ответ дан Rafael Barros 16 August 2018 в 10:49
поделиться
  • 1
    моя проблема была похожа на вас, но это было немного иначе, таблица phpmyadmin drop down (которая появляется слева) показывала мне 11 таблиц, а на правой стороне было видно только 10 таблиц, я не знаю, что на самом деле проблема быть ошибкой с phpmyadmin или ошибкой с mysql, но в любом случае я решил проблему давно, но используя указанный вами метод. поэтому отметка вашего ответа как выбранного :) – Shaheer 22 December 2011 в 07:57
  • 2
    Скопировав файлы frm, myd myi, вы только скопировали схему базы данных. Фактические данные хранятся в файле ibdata1 в случае таблиц INNODB. Если вы скопировали файлы ibdata1 и ib_logfile?, это сработало бы. – pprakash 10 December 2012 в 15:37
  • 3
    Ключевая часть здесь кажется последним предложением - воссоздайте свой db и перезапустите mysql. – Caspar Harmer 12 April 2013 в 00:12
  • 4
    Перезагрузка mysql решила мою проблему. Спасибо. – apis17 27 October 2015 в 05:44

выполняется из CMD & amp; % path% = установлен в mysql / bin

mysql_upgrade -u user -ppassword

0
ответ дан Ravi Parekh 16 August 2018 в 10:49
поделиться
  • 1
    убедитесь, что вы находитесь на локальном хосте, это попытается обновить – Ravi Parekh 14 June 2011 в 12:37
  • 2
    Я просто получил много ошибок. Таблица «xxx.u8nxi_updates» не существует – McVitas 13 November 2017 в 20:33

Как упоминает выше pprakash, копирование файлов table.frm И файл ibdata1 был тем, что сработало для меня. (Я бы просто прокомментировал этот комментарий, но это требование SO для 50 пунктов означает, что я должен предоставить решение, даже если это просто передел существующего ... странный.)

Вкратце:

  1. Закройте выделенный текст клиента DB explorer (например, Workbench).
  2. Остановите службу MySQL (хост Windows).
  3. Сделайте безопасную копию практически все!
  4. Сохраните копию файла таблицы (например, mytable.frm) в папку данных схемы (например, MySQL Server / data / {yourschema}).
  5. Сохраните копию файла ibdata1 в папке с данными (например, MySQL Server / data).
  6. Перезапустите службу MySQL.
  7. Убедитесь, что таблицы теперь доступны, доступны для запроса и т. Д. в вашем клиенте DB explorer.

После этого все было хорошо. (Не забудьте сделать резервную копию, если у вас есть успех!) [/ ​​G10]

1
ответ дан SteveCinq 16 August 2018 в 10:49
поделиться

У меня была та же проблема. Я попытался создать таблицу в mysql и получил ту же ошибку. Я перезапустил сервер mysql и запустил эту команду и смог создать / перенести таблицу после повторения.

3
ответ дан thekosmix 16 August 2018 в 10:49
поделиться

Сегодня я столкнулся с такой же проблемой. Я был в очень трудной ситуации, но какой идентификатор я создал таблицу с другим именем, например (modulemaster не создавал, затем я создавал modulemaster1), и после создания таблицы я просто делаю таблицу переименования.

1
ответ дан Vipin Gurjar 16 August 2018 в 10:49
поделиться

Недавно у меня была такая же проблема, но на Linux Server. База данных была разбита, и я восстановил ее из резервной копии на основе простого копирования /var/lib/mysql/* (аналоговая папка DATA mysql в wamp). После восстановления мне пришлось создать новую таблицу и получить mysql-ошибку # 1146. Я попытался перезапустить mysql, и он сказал, что это не может начаться. Я проверил журналы mysql и обнаружил, что mysql просто не имеет доступа к своим файлам DB. Я проверил информацию о владельце / var / lib / mysql / * и получил 'myuser:myuser' (myuser is me). Но это должно быть 'mysql:adm' (так это собственная машина для разработчиков), поэтому я сменил владельца на «mysql: adm». И после этого mysql начал нормально, и я мог создавать таблицы или делать какие-либо другие операции.

Итак, после перемещения файлов базы данных или восстановления из резервных копий проверьте доступность для mysql.

Надеюсь, что это помогает ...

0
ответ дан wens 16 August 2018 в 10:49
поделиться

Сегодня я столкнулся с той же проблемой. Я пытался создать таблицу users, и мне было предложено ERROR 1146 (42S02): Table users doesn't exist, что не имело никакого смысла, потому что я просто пытался создать таблицу !!

Затем я попытался удалить таблицу, набрав DROP TABLE users, зная, что она потерпит неудачу, потому что она не существует, и я получил сообщение об ошибке Unknown table users. После получения этой ошибки я попытался создать таблицу снова, и, как ни странно, она успешно создала таблицу!

. Моя интуиция заключается в том, что я, вероятно, создал эту таблицу раньше, и она не была полностью очищена. Явным образом сказал DROP TABLE мне удалось как-то сбросить внутреннее состояние? Но это только моя догадка.

Короче говоря, попробуйте DROP любую таблицу, которую вы создаете, и СОЗДАЙТЕ ее снова.

1
ответ дан Xin 16 August 2018 в 10:49
поделиться
Другие вопросы по тегам:

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