Ошибка MySQL - SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064
Я просмотрел предложенный код и не могу найти ответ, который решает проблему, поэтому я спрашиваю об этом.
Я использую MAMP v2.0.5, MySQL v5.5.9, PHP v5.3.6 (в соответствии с MAMP, v5.3.8 в соответствии с OS X) и FuelPHP v1.1, и, будучи новичком в фреймворках, я прорабатываю учебное пособие. Часть учебника требует использования "масла" для выполнения миграций для обновления проекта. Определив таблицу, миграция применяет SQL для генерации таблицы. Когда я это делаю, я получаю вышеуказанную ошибку. Посмотрев сгенерированный код, я не могу найти никаких ошибок (возможно, я упускаю что-то очевидное). Я использую PDO, а также проверил, что мой sql_mode = ''
, который это делает. Выполнение MySQL-запроса из командной строки и phpMyAdmin подтверждает это. Я думаю, что это ошибка MySQL, а не проблема с FuelPHP/oil. У кого-нибудь есть предложения?
Сгенерированный SQL:
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varhcar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`group` int(11) NOT NULL,
`email` varchar(255) NOT NULL,
`last_login` int(11) NOT NULL,
`login_hash` varchar(255) NOT NULL,
`profile_fields` text NOT NULL,
`created_at` int(11) NOT NULL,
`updated_at` int(11) NOT NULL,
PRIMARY KEY `id` (`id`)
) DEFAULT CHARACTER SET utf8;
Ошибка:
bash:blog me$ oil refine migrate
Error - SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'varhcar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`group` int(11) NOT NU' at line 3 with query: "CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varhcar(50) NOT NULL,
`password` varchar(255) NOT NULL,
`group` int(11) NOT NULL,
`email` varchar(255) NOT NULL,
`last_login` int(11) NOT NULL,
`login_hash` varchar(255) NOT NULL,
`profile_fields` text NOT NULL,
`created_at` int(11) NOT NULL,
`updated_at` int(11) NOT NULL,
PRIMARY KEY `id` (`id`)
) DEFAULT CHARACTER SET utf8;" in COREPATH/classes/database/pdo/connection.php on line 137
1 ответ
Вы сделали опечатку:
`username` varhcar(50) NOT NULL,
должно быть:
`username` varchar(50) NOT NULL,