为什么CREATE TABLE IF NOT EXISTS总是返回false?

时间:2014-05-06 23:20:06

标签: php mysql

我不知道我在这里做错了什么,但我一直试图让这个工作几个小时。我只是想让它创建一个不存在的表。我尽可能简单地制作它仍然只是返回虚假并且不会改变任何东西。请告诉我我做错了事先谢谢你。

$conn=mysql_connect('localhost:3306', 'root', '');
mysql_select_db("test",$conn);

$sql = "CREATE TABLE IF NOT EXISTS 'works' (
   `autoPlace` int(11) unsigned NOT NULL auto_increment,
   `element` float(255) NOT NULL,
   `month` tinyint(4) NOT NULL ,
   `mday`   tinyint(4) NOT NULL ,
   `wday` char(12) NOT NULL ,
   `time` smallint(6) NOT NULL,
    PRIMARY KEY  (`autoPlace`)     
   ) ENGINE=MyISAM  DEFAULT CHARSET=utf8";

$ thisKeepsReturningFalse = mysql_query($ sql);   的var_dump($ thisKeepsReturningFalse);

3 个答案:

答案 0 :(得分:4)

当我尝试执行您的查询时出现此错误:

Incorrect column specifier for column 'element'

问题是float(255)不是有效的声明

它必须是float(x) x<=53,或者您可以使用float(x,y) - 请参阅mysql docs here

另外,正如评论中所指出的,works周围有单引号。取下它们或用反引号替换它们。

修复这些错误后,我能够成功执行您的查询。

答案 1 :(得分:0)

MySQL中的

“CREATE”命令不是返回值命令,因此它总是返回false(不像SELECT)。要检查命令“CREATE”是否成功,可以在执行“CREATE”命令后使用“SHOW TABLES”进行检查。

答案 2 :(得分:0)

当你创建一个浮动元素时,你必须用逗号指定小数。而且表的名称也不能用这种格式&#39;&#39;它必须在``里面。

因此,在此示例中,查询应为:

CREATE TABLE IF NOT EXISTS `works` 
(
    `autoPlace` int(11) unsigned NOT NULL auto_increment,
    `element` float(255,0) NOT NULL,
    `month` tinyint(4) NOT NULL ,
    `mday`   tinyint(4) NOT NULL ,
    `wday` char(12) NOT NULL ,
    `time` smallint(6) NOT NULL,
    PRIMARY KEY  (`autoPlace`)     
) ENGINE=MyISAM  DEFAULT CHARSET=utf8

注意浮动它是如何浮动(255,0)而不仅仅是255.你必须设置它,0是默认值