mySQL Workbench 中的数据类型未更新
Posted
技术标签:
【中文标题】mySQL Workbench 中的数据类型未更新【英文标题】:data type not updating in mySQL Workbench 【发布时间】:2021-03-11 21:29:12 【问题描述】:我似乎无法更改“first_name”列的数据类型,我希望它是 VARCHAR(45),但它不会从 INT(11) 更改,如下图和连接所示。
我曾多次尝试对图表进行正向工程,但它并没有从右图中显示的最初的第一次“迭代”更新。
更新: 我试图删除文件,重写表并用正确的信息对它们进行转发工程,但它仍然没有从整数改变....啊。
在下面发布我的代码:
PHP:
<?php
//connection information
$client = "localhost";
$user = "root";
$key = "root";
$dbname = "formDB";
// Attempt mysql server connection
$connection = new mysqli($client, $user, $key, $dbname);
// Check connection
if($connection === false)
die("ERROR: Could not connect. " . mysqli_connect_error());
// Escape user inputs for security
$first_name = mysqli_real_escape_string($connection, $_POST['first_name']);
$last_name = mysqli_real_escape_string($connection, $_POST['last_name']);
$email_address = mysqli_real_escape_string($connection, $_POST['email_address']);
// attempt insert query execution
$sql = "INSERT INTO person (first_name, last_name, email_address) VALUES ('$first_name', '$last_name', '$email_address')";
if(mysqli_query($connection, $sql))
echo "Records added successfully!";
else
echo "ERROR! not able to execute: <br> $sql <br> " . mysqli_error($connection);
// close connection
mysqli_close($connection);
?>
HTML:
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>form to db</title>
</head>
<body>
<!-- create form -->
<form class="details" action="insert.php" method="post">
<p>
<label for="first_name"> First name:</label>
<input type="text" name="first_name" id="first_name">
</p>
<p>
<label for="last_name">Last Name:</label>
<input type="text" name="last_name" id="last_name">
</p>
<p>
<label for="email_address">Email Address:</label>
<input type="text" name="email_address" id="email_address">
</p>
<input type="submit" value="submit">
</form>
</body>
</html>
【问题讨论】:
MySQL Workbench 是我见过的漏洞最多的应用程序之一。这就是为什么我建议在搜索任何可能只是工作台中的错误的错误之前检查真实的 mySQL 查询中的所有内容,例如解释表 我是 SQL 新手,该语法是什么样的? 【参考方案1】:在 MySQL 中,您可以使用以下语法来更改现有列的数据类型:
alter table person modify first_name varchar(45);
将int(11)
转换为varchar(45)
应该不会出现转换问题,即使您的数据已经包含数据。
【讨论】:
是的,我同意。我希望它是一个字符串,我的问题是当我告诉 mySQL-Workbench 时它不会从整数更新为字符串。我正在使用 PHP,我可以通过 PHP 查询您的解决方案吗?像这样:ALTER TABLE person MODIFY first_name VARCHAR(45);
@crud:我的错,我反过来读了你的要求。是的,这是正确的语法。我更新了我的答案。
它仍然不想更改为字符串,也许我做错了什么。我将更新我的帖子以包含我的代码。我可能有一些缺陷在那里..
@crud:这是一个演示,表明这确实有效:dbfiddle.uk/…
只要在Workbench中检查类型就不会成功。请自学使用 mysql CLI。然后你就可以直接访问 mysql 而不需要任何可能导致问题的脚本或应用程序以上是关于mySQL Workbench 中的数据类型未更新的主要内容,如果未能解决你的问题,请参考以下文章
无法通过 Workbench 或 MS Access 更新 MySQL 视图中的数据
MYSQL Workbench 未填充 Spring Boot JPA 实体的表数据