【问题标题】:data type not updating in mySQL WorkbenchmySQL 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 新手,该语法是什么样的?

标签: php html mysql mysql-workbench alter-table


【解决方案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 而不需要任何可能导致问题的脚本或应用程序
猜你喜欢
  • 2018-01-17
  • 1970-01-01
  • 2014-06-10
  • 1970-01-01
  • 1970-01-01
  • 2014-11-30
  • 1970-01-01
  • 2021-06-16
  • 1970-01-01
相关资源
最近更新 更多