我试图修改多个表格并将 username
VARCHAR列的大小更改为999,因为当前大小太小,现在一切都混乱了。 我该如何做到这一点?
我尝试过以下方法,并且对于一个表格它是有效的,但当尝试更新多个表格名称时返回错误:
ALTER TABLE `TABLE_NAME` CHANGE `username` VARCHAR( 999 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
我试图修改多个表格并将 username
VARCHAR列的大小更改为999,因为当前大小太小,现在一切都混乱了。 我该如何做到这一点?
我尝试过以下方法,并且对于一个表格它是有效的,但当尝试更新多个表格名称时返回错误:
ALTER TABLE `TABLE_NAME` CHANGE `username` VARCHAR( 999 ) CHARACTER SET latin1 COLLATE latin1_swedish_ci NOT NULL
你不能用单个查询完成此操作。你需要查询 information_schema
视图来获取要更改的表和列的列表。然后,你将使用得到的结果集创建 ALTER
查询(可以在外部应用程序/脚本中或在MySQL中使用游标和准备语句)。
information_schema
?你能给我一个例子吗? - John Doefunction changeSchema($oldName, $newName, $type, $len)
{
$res = mysql_query("SELECT DISTINCT TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = '$oldName' AND
TABLE_SCHEMA = 'your_database_name'");
if($res)
while($line=mysql_fetch_object($res))
mysql_query("ALTER TABLE `$line->TABLE_NAME` CHANGE `$oldName` `$newName` $type( $len ) NOT NULL ");
}
}
我随后能够轻松修改任何需要的表格。