Мне не удается создать базовую таблицу в mySQL для отслеживания сообщений электронной почты, отправленных на существующий список адресов электронной почты в той же базе данных и в той же папке, включая (1) метку времени серийного номера (2) при отправке (3) тему письма (4) ) тело письма (5) источник письма.
Этот вопрос отличается от предыдущих на вашем сайте (который я подробно прочитал), потому что он ТАК БАЗОВЫЙ - я буквально создаю 3 основных типа полей и у меня такая глубокая ошибка, что я не могу двигаться дальше. Все остальные, которые я обнаружил, имеют либо более сложные соображения / факторы, такие как объединения, миграция и т. Д., Где ошибка заключалась в понимании пользователем этих сложных уровней или частично понятном или унаследованном коде, либо настоящих новичках, где кто-то не понимал основных тип данных или базовый синтаксис и обзор любой начинающей книги по MySQL / SQL помогут разобраться. Так что ни один не применим к этому случаю: чистый, простой случай уровня новичка с только настройками и выпадающими списками для выбора (мне не нужен синтаксис!), Где он не будет работать и, в общем-то, создает синтаксические ошибки!
Я использую XAMPP для OS X 5.6.19-0 [2016-03-04], версия mySQL - mariaDB, и я работаю на MacBook Air с использованием OS X Mavericks. Я основываю этот пример на третьей главе книги «HeadFirst PHP & MySQL», где, как всегда, я пытаюсь расширить пример, чтобы напрячь все свои силы понимания, только чтобы ударить в стену!
БД: 'elvis_store', таблица для создания: 'emails_sent'. Мой экран phpmyadmin выглядит следующим образом (разделенный запятыми и изображаемый аналогично нечисловому массиву, поскольку столбцы не учитывались при форматировании) - все безымянные столбцы / настройки остались пустыми по умолчанию:
Имя: электронная почта #; Тип: INT; Индекс: ИНДЕКС; A_I: [✔︎] (флажок установлен); Виртуальность: НАСТОЯЩИЙ.
Имя: date-time_sent; Тип: DATETIME; Виртуальность: НАСТОЯЩИЙ;
Имя: email_subject; Тип: VARCHAR (75); Виртуальность: НАСТОЯЩИЙ;
Имя: email_body; Тип: ТЕКСТ (65 535); Виртуальность: НАСТОЯЩИЙ;
Имя: sent_from_email; Тип: VARCHAR (75); Виртуальность: НАСТОЯЩИЙ;
ВСЕ ПОЛЯ:
сопоставление: utf8_unicode_ci (каждый столбец / в целом)
Тип MIME: текст / обычный
Система хранения: InnoDB
Перевод phpmyadmin в SQL:
CREATE TABLE `elvis_store`.`emails_sent` (
`email` INT AS () PERSISTENT ,
`date-time_sent` DATETIME AS () PERSISTENT ,
`email_subject` VARCHAR(75) AS () PERSISTENT ,
`email_body` TEXT AS () PERSISTENT ,
`sent_from_email` VARCHAR(75) AS () PERSISTENT ,
INDEX (`email`)
) ENGINE = InnoDB CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Я получаю # 1064 эту ошибку, когда нажимаю кнопку «Сохранить» внизу или кнопку «Перейти» вверху:
"# 1064 - у вас ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей версии сервера MariaDB, чтобы узнать правильный синтаксис для использования рядом с ') PERSISTENT, date-time_sent
DATETIME AS () PERSISTENT, email_subject
VA 'в строке 1 "
Вариации в ошибке # 1064, основанные на попытке многих опций, которые могут иметь смысл для меня, ВСЕГДА упоминайте имена, значения и т. Д. «TIMESTAMP» / «DATETIME», так что, скорее всего, это проблема. Манипуляции со значениями DATETIME и временными метками являются центральными для функциональности моего веб-приложения, поэтому вопрос о том, как обрабатывать создание таблиц и столбцов с такими значениями - что можно и нельзя, - в центре моего вопроса, особенно потому, что я думаю, что у меня есть VARCHAR и Индекс INT работает в другой таблице и выполняется в той же книге.
Я попробовал следующее безрезультатно (все еще получаю ошибку # 1064):
исключение "#" и "-" из имен полей - я не вижу, чтобы использованное мной сопоставление препятствовало использованию этих специальных символов;
изменение типа date-time_sent с DATETIME на TIMESTAMP и DATE;
изменение значения по умолчанию поля datetime / timestamp по умолчанию будет нулевым и или разрешать нулевые значения (если флажок установлен) в различных комбинациях;
изменение (резкое уменьшение) размера текстового поля до 500 символов в случае, если это было проблемой с моей версией XAMPP / SQL / PHP
Я не вижу никаких степеней свободы, как это изменить, потому что:
все поля должны быть постоянными - после отправки электронного письма
письма должны иметь автоматически увеличивающийся индекс серийного номера,
по умолчанию используется автоматическая отметка времени, создаваемая при отправке электронных писем;
Сортировка должна быть формой utf для вероятно большого количества международных клиентов;
Я не понимаю, почему phpmyadmin добавляет «AS ()» при создании SQL-эквивалента моих флажков и раскрывающихся списков, но, конечно, это не будет ошибкой, если система создает этот язык;
Отметка времени должна иметь тип DATETIME, поскольку диапазон от 1000-01-01 до 9999-12-31 предпочтительнее, чем для более узкого диапазона типа TIMESTAMP (1970-01-01 00:00:01 UTC до '2038-01-19 03:14:07' UTC). Я не хочу планировать переписывание своего сайта с учетом того, что все метки времени не будут поддерживаться через 20 лет (2018–2038 гг.), Особенно если эти вопросы являются центральными для моего веб-приложения, если мне это не нужно.
Так что я застрял. Почему ошибки # 1064 и как я могу создать эту базовую таблицу?
Заранее спасибо за помощь