当AUTO_INCREMENT包含在创建脚本中时,PDO查询无法执行,但查询似乎有效

时间:2013-05-13 16:49:59

标签: mysql pdo

我正在尝试使用内存数据库使用PHPUnit设置一些测试脚本,但是我无法正确创建数据库。当我第一次运行查询时它运行正常,但我忘了将AUTO_INCREMENT添加到id字段。一旦我添加了它,PDO就会在脚本运行的任何时候丢失并发出致命错误。我已经尝试通过phpMyAdmin运行相同的查询,看它是否有效(它没有任何投诉),甚至用它来执行我想要的操作并复制它运行的SQL没有任何运气,所以我有点喜欢对于正在发生的事情的损失。如果有人能帮我一把,那将是一个很大的帮助。查询可以在下面找到

CREATE TABLE IF NOT EXISTS `checks` (
    `id` int(60) NOT NULL AUTO_INCREMENT,
    `check_type` varchar(255),
    `purchase_id` varchar(255),
    `price` varchar(255),
    `time` varchar(255),
    `user_id` varchar(255),
    `email` varchar(255),
    `site_id` varchar(255),
    PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

VARCHAR用于除ID以外的所有内容,因为它们通过自动脚本运行,数据类型可能不同。这是一个MySQL数据库,如果这有所作为。感谢您提供任何帮助

编辑:按要求添加完整的错误消息:

  

SQLSTATE [HY000]:一般错误:1“AUTO_INCREMENT”附近:语法错误

1 个答案:

答案 0 :(得分:0)

当我切换到使用PDO时,我得到了同样的东西。删除id字段上的NOT NULL。我不知道为什么......没有看到任何文件。

CREATE TABLE IF NOT EXISTS `checks` (
    `id` int(60) AUTO_INCREMENT,
    `check_type` varchar(255),
    `purchase_id` varchar(255),
    `price` varchar(255),
    `time` varchar(255),
    `user_id` varchar(255),
    `email` varchar(255),
    `site_id` varchar(255),
    PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;