MySQL SET DEFAULT返回错误:查询为空

时间:2016-11-14 10:27:30

标签: php mysql alter setdefault

我有一个名为'users'的现有MySQL(版本5.6.12)表,我试图通过php(版本5.4.12)设置列默认值,例如:

$query = "ALTER TABLE users ALTER username SET DEFAULT NULL";
$result = mysqli_query($query);

然而,这会产生SQL错误(导致消息'查询为空')。 'username'是VARCHAR(200)类型列。

使用带引号的文字(例如“John”)作为默认值会导致相同的错误。 (只是为了踢,虽然我使用MySQL,但我也尝试根据SQL / MS Access或Oracle语法修改查询,但它仍然不起作用。)

我做错了什么?

编辑:问题解决了。上面的查询很好,没有错。

我犯了一个令人难以置信的愚蠢错误,在$前忘了$query个签名,即我的代码是$result = mysqli_query(query);

(正如你所知,我是一名拥有数十年经验的程序员。)

4 个答案:

答案 0 :(得分:0)

更改下面的查询

$query = "ALTER TABLE users MODIFY Column username VARCHAR(200) NULL DEFAULT NULL";

 $query = "ALTER TABLE users CHANGE Column username username VARCHAR(255) NULL DEFAULT NULL";

答案 1 :(得分:0)

我将这个用于我的网站

$query = "ALTER TABLE 'users' CHANGE 'username' 'username' VARCHAR( 100 ) NULL DEFAULT NULL";
$result = mysqli_query($query);

答案 2 :(得分:0)

问题解决了。查询实际上很好,没有错。

我犯了一个令人难以置信的愚蠢错误,在$前忘了$query个签名,即我的代码是$result = mysqli_query(query);

(正如你所知,我是一名拥有数十年经验的程序员。)

答案 3 :(得分:-1)

在MySQL中你使用反引号[`]引用的文字,不要使用引号[']。另一方面,每个DDBB引擎都使用其略有不同的SQL风格。无论如何,它们中的大多数都能够解释各种活动标准SQL89,SQL92,SQL99等所描述的公共子集。

简而言之,关于MySQL期望它,你的SQL是错误的。您必须通过使用不同的SQL引擎在试验和错误之上构建您的SQL技能,直到您可以为每个引擎提供他们期望的SQL变体。只是不要放弃并坚持查询。简化它,运行较短的字符串,直到找到一个有效的字符串,然后通过添加较小的字符串进行优化,直到达到目标。