0

我有一个名为“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

4 回答 4

0

我将这个用于我的网站

$query = "ALTER TABLE 'users' CHANGE 'username' 'username' VARCHAR( 100 ) NULL DEFAULT NULL";
$result = mysqli_query($query);
于 2016-11-14T10:47:56.880 回答
0

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

我犯了一个令人难以置信的愚蠢错误,忘记$了前面的标志$query,即我的代码是写的$result = mysqli_query(query);

(您知道,我是一名拥有数十年经验的程序员。)

于 2016-11-14T11:42:09.567 回答
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";
于 2016-11-14T10:31:50.953 回答
-1

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

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

于 2016-11-14T10:42:44.373 回答