我有一个架构,我想加载到我的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
答案 0 :(得分:1)
我尝试重现此问题,但在服务器使用node-mysql
连接到本地mysql和Azure ClearDB时未能收到任何错误。我建议您使用一些第三方GUI管理工具(如HeidiSQL for Windows或Dbeaver)仔细检查mysql,以获得任何平台支持Java。
您可以在http://www.heidisql.com/和http://dbeaver.jkiss.org/
下载它们我认为您需要为每个JS句子添加符号;
,并使用var
代替const
来声明变量,因为遵循JavaScript规范和node-mysql文档,虽然在NodeJS上没有符号;
但它工作正常。
请参阅以下文档:
;
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements var
& const
:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var和
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/const 当我连接MySQL并加载表模式来创建表时,我发现你的SQL DDL语句不正确。请参阅mysql官方文档http://dev.mysql.com/doc/refman/5.6/en/create-table.html和http://dev.mysql.com/doc/refman/5.6/en/timestamp-initialization.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);
});