vlang / v

Simple, fast, safe, compiled language for developing maintainable software. Compiles itself in <1s with zero library dependencies. Supports automatic C => V translation. https://vlang.io
MIT License
35.76k stars 2.16k forks source link

db.sqlite.SQLError on Windows 11 by download from releases #20744

Open sanrentai opened 8 months ago

sanrentai commented 8 months ago

Describe the bug

copy codes from tutorials/building_a_simple_web_blog_with_vweb/README.md

v run .

SQLError

Reproduction Steps

study by read this https://github.com/vlang/v/blob/master/tutorials/building_a_simple_web_blog_with_vweb/README.md

// blog.v

import db.sqlite
import vweb

struct App {
    vweb.Context
pub mut:
    db sqlite.DB
}

fn main() {
    mut app := App{
        db: sqlite.connect(':memory:')!
    }
    sql app.db {
        create table Article
    }!

    first_article := Article{
        title: 'Hello, world!'
        text: 'V is great.'
    }

    second_article := Article{
        title: 'Second post.'
        text: 'Hm... what should I write about?'
    }

    sql app.db {
        insert first_article into Article
        insert second_article into Article
    }!
    vweb.run(app, 8080)
}

pub fn (app &App) index() vweb.Result {
    articles := app.find_all_articles()
    return $vweb.html()
}
// article.v
module main

struct Article {
    id    int    @[primary; sql: serial]
    title string
    text  string
}

pub fn (app &App) find_all_articles() []Article {
    return sql app.db {
        select from Article
    } or { panic(err) }
}
<html>
  <head>
    <title>V Blog</title>
  </head>
  <body>
    @for article in articles
    <div>
      <b>@article.title</b> <br />
      @article.text
    </div>
    @end
  </body>
</html>

Expected Behavior

no panic

Current Behavior

V panic: db.sqlite.SQLError: near "FROM": syntax error (1) (SELECT FROM Article;); code: 1 v hash: a374d25 D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:14501: at _v_panic: Backtrace D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:41298: by mainApp_find_all_articles D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:41443: by mainApp_index D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:40841: by vwebhandle_route_T_main__App D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:40721: by vwebhandle_conn_T_mainApp D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:41252: by vwebWorker_T_mainApp_process_incoming_requests_T_mainApp D:/AppData/Local/Temp/v_0/blog.01HP11QX23SP6K5M8YZ3QN00NF.tmp.c:8423: by vwebWorker_T_mainApp_process_incoming_requests_T_main__App_thread_wrapper 0092b3ce : by ??? 009275fe : by ??? 0092b408 : by ??? 7ff8a3df53e0 : by ???

Possible Solution

orm.SelectConfig{ table: 'Article' is_count: false has_where: false has_order: false order: '' order_type: asc has_limit: false primary: '' has_offset: false fields: [] types: [] }

I found the fields is empty. I do not know how to resolve this bug? pub fn (db DB) @select(config orm.SelectConfig, data orm.QueryData, where orm.QueryData) ![][]orm.Primitive how the config come here?

Additional Information/Context

I compile v.exe from source code. It is ok now! weekly.2024.06 cannot work on windows 11

V version

V 0.4.4 a374d25

Environment details (OS name and version, etc.)

V full version: V 0.4.4 a374d25 OS: windows, Microsoft Windows 11

[!NOTE] You can use the 👍 reaction to increase the issue's priority for developers.

Please note that only the 👍 reaction to the issue itself counts as a vote. Other reactions and those to comments will not be taken into account.

felipensp commented 8 months ago

It runs fine on Linux.

viniciusfdasilva commented 8 months ago

In Windows 10, it's also running normally.

sanrentai commented 8 months ago

In Windows 10, it's also running normally.

I use sqlite C source code as an amalgamation, version 3.45.1. What version are you useing?

viniciusfdasilva commented 8 months ago

@sanrentai I use the same version copying source code to v/thirdparty/sqlite/

sanrentai commented 8 months ago

@viniciusfdasilva

Your v.exe is download from releases or compiled by yourself?

viniciusfdasilva commented 8 months ago

@sanrentai I cloned the repository and executed v.bat

lightcax commented 8 months ago

I get same error when I use the select in win10, but update insert is ok message: near "FROM": syntax error (1) (SELECT FROMUser;); code: 1

module main
import db.sqlite

@[table: 'User']
struct User {
    id   int @[primary; sql: serial]
    name string
    age  int
}
fn main() {
    mut db := sqlite.connect('user.db') or { panic(err) }
    // sql db {
    //  create table User
    // }!
    // mut user := User{
    //  name: 'xxx'
    //  age: 10
    // }
    // sql db {
    //  insert user into User
    // }!
    mut tuser:= sql db {
            select from User
    } or {
        println(err)
        []User{}
    }
    println(tuser)

}

Looks like the same problem. Compile v.exe from source code, is ok. Download from releases exe is error