0

我有一个要加载到我的 Azure/Node 服务器的架构:

USE mydatabase;

CREATE TABLE users(
    id BIGINT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(40),
    last_name VARCHAR(40)
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL,
    PRIMARY KEY(user_id)
)

当服务器使用 node-mysql 连接时,它会显示ER_NO_SUCH_TABLE.

关于如何进行的任何建议?

编辑:这是节点代码:

const mysql = require("mysql")

function connectToDB () {
  const connection_params = {
    host: process.env.db_host || "localhost",
    user: process.env.db_username || "root",
    password: process.env.db_password || "",
    database: process.env.db_database || "test_database"
  }
  const connection = mysql.createConnection(connection_params)
  connection.connect(console.log)
  return connection
}

module.exports = connectToDB
4

1 回答 1

1

我试图重现该问题,但当服务器使用node-mysql. 我建议您使用一些第三方 GUI 管理工具(如适用于 Windows 的 HeidiSQL 或适用于任何支持 Java 的平台的 Dbeaver)仔细检查 mysql。

您可以在http://www.heidisql.com/http://dbeaver.jkiss.org/下载它们

我认为您需要;为每个 JS 句子添加符号并使用var而不是const声明变量,因为遵循 JavaScript 规范和 node-mysql 文档,尽管它;在 NodeJS 上没有符号也可以正常工作。

请参考以下这些文档:

当我连接MySQL并加载表模式创建表时,我发现你的SQL DDL语句不正确。请参考 mysql 官方文档http://dev.mysql.com/doc/refman/5.6/en/create-table.htmlhttp://dev.mysql.com/doc/refman/5.6/en/timestamp -初始化.html。注意:对于日期类型DATETIME& TIMESTAMPE,mysql官方文档说:

DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 不能与 DATETIME 列一起使用。

所以这里是更新的 ddl sql 表和代码。

表 DDL:

CREATE TABLE users (
    id BIGINT NOT NULL AUTO_INCREMENT,
    first_name VARCHAR(40),
    last_name VARCHAR(40),
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY(id)
)

代码:

var mysql = require('mysql');

var connection_parames = "mysql://user:password@host/test_database";

var connection = mysql.createConnection(connection_parames);

var table_ddl = "CREATE TABLE users ("+
    "id BIGINT NOT NULL AUTO_INCREMENT,"+
    "first_name VARCHAR(40),"+
    "last_name VARCHAR(40),"+
    "created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,"+
    "PRIMARY KEY(id)"+
")";

connection.query(table_ddl, function(err, result) {
    if (err) {
        console.log(err);
    }
    console.log(result);
});
于 2015-11-13T04:18:26.780 回答