52 lines
1.3 KiB
Go
52 lines
1.3 KiB
Go
|
|
package main
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"database/sql"
|
|||
|
|
"fmt"
|
|||
|
|
"log"
|
|||
|
|
|
|||
|
|
_ "github.com/go-sql-driver/mysql"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
func main() {
|
|||
|
|
// MySQL connection info
|
|||
|
|
username := "root"
|
|||
|
|
password := "root"
|
|||
|
|
hostname := "127.0.0.1"
|
|||
|
|
port := "3306"
|
|||
|
|
dbname := "nl_blog"
|
|||
|
|
|
|||
|
|
// Build DSN
|
|||
|
|
dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s", username, password, hostname, port, dbname)
|
|||
|
|
|
|||
|
|
// Connect to MySQL
|
|||
|
|
db, err := sql.Open("mysql", dsn)
|
|||
|
|
if err != nil {
|
|||
|
|
log.Fatalf("Failed to open database connection: %v", err)
|
|||
|
|
}
|
|||
|
|
defer db.Close()
|
|||
|
|
|
|||
|
|
// Create table query
|
|||
|
|
createTableQuery := `
|
|||
|
|
CREATE TABLE IF NOT EXISTS user_access_logs (
|
|||
|
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
|||
|
|
user_id INT DEFAULT 0 COMMENT '用户ID(未登录用户为0)',
|
|||
|
|
user_ip VARCHAR(45) NOT NULL COMMENT '用户IP地址',
|
|||
|
|
user_location VARCHAR(100) COMMENT '用户归属地',
|
|||
|
|
article_id INT NOT NULL COMMENT '访问的文章ID',
|
|||
|
|
access_time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '访问时间',
|
|||
|
|
INDEX idx_user_id (user_id),
|
|||
|
|
INDEX idx_article_id (article_id),
|
|||
|
|
INDEX idx_access_time (access_time)
|
|||
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户访问记录表';
|
|||
|
|
`
|
|||
|
|
|
|||
|
|
// Execute query
|
|||
|
|
_, err = db.Exec(createTableQuery)
|
|||
|
|
if err != nil {
|
|||
|
|
log.Fatalf("Failed to create table: %v", err)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
fmt.Println("Table 'user_access_logs' created successfully (or already exists).")
|
|||
|
|
}
|