我有一个名为'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);
(正如你所知,我是一名拥有数十年经验的程序员。)
答案 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变体。只是不要放弃并坚持查询。简化它,运行较短的字符串,直到找到一个有效的字符串,然后通过添加较小的字符串进行优化,直到达到目标。