-
-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SQLiteException: duplicate column name: Id #30
Comments
Hey @MrTony1987, thanks for the report. |
Hello, my code only contains the content in the Start method, with nothing else. You can freely create a MonoBehaviour script that includes this Start method and attach it to a GameObject. Then, print the log to the screen, and run it multiple times on an Android device to check the logs. |
Well, you didn't really put the definition of Player in your code in this issue. I'm assuming you are using the same code that is present in this repository's README file. public class Player
{
[PrimaryKey, AutoIncrement]
public int Id { get; set; }
public string Name { get; set; }
} I'll try to reproduce on an Android build here. |
Also, tip for next time: use "```cs" to highlight code blocks with C# syntax =] |
Ok, I've been able to reproduce this bug here. It's really weird, in my device the table is created only with the "Name" column, there's no "Id" column whatsoever 🫠 This needs more investigation, but it seems like a bug in the ORM code from SQLite-net. Tested in Unity 2022.3.25. |
Is there any update on this? I also face the same problem. |
No updates from me, at least. In my latest test, I got the "Id" column back in the "CREATE TABLE" statement by lowering the managed code stripping level. It's possible that the attributes are being stripped from the builds, we can try to preserve them or something like that to see if it fixes the problem (reference documentation on managed code strippping). |
I had the same issue with the iOS platform also. SQLiteException: duplicate column name: LevelName
at SQLite.SQLite3.Prepare2 (System.IntPtr db, System.String query) [0x00000] in <00000000000000000000000000000000>:0
at SQLite.SQLiteCommand.ExecuteNonQuery () [0x00000] in <00000000000000000000000000000000>:0
at SQLite.SQLiteConnection.Execute (System.String query, System.Object[] args) [0x00000] in <00000000000000000000000000000000>:0
at SQLite.SQLiteConnection.MigrateTable (SQLite.TableMapping map, System.Collections.Generic.List`1[T] existingCols) [0x00000] in <00000000000000000000000000000000>:0
at SQLite.SQLiteConnection.CreateTable (System.Type ty, SQLite.CreateFlags createFlags) [0x00000] in <00000000000000000000000000000000>:0
at GameDataManager.LoadDataModel () [0x00000] in <00000000000000000000000000000000>:0
at GameDataManager.Awake () [0x00000] in <00000000000000000000000000000000>:0 The table structure like this: public class WaveDataModel
{
// Remove the static dbPath and replace it with a method
private static string dbFileName = "EnemyWave.db";
public static string GetDbPath()
{
string dbPath = Path.Combine(Application.streamingAssetsPath, dbFileName);
return dbPath;
}
public string LevelName { get; set; }
public int WaveNumber { get; set; }
} Loading logic: private void LoadDataModel()
{
// Open a connection to the SQLite database
using (SQLiteConnection db = new SQLiteConnection(WaveDataModel.GetDbPath()))
{
var result = db.CreateTable<WaveDataModel>();
WaveDataArray = db.Table<WaveDataModel>().ToArray();
string LevelName = SceneManager.GetActiveScene().name;
WaveDataArray = WaveDataArray.Where(wave => wave.LevelName == LevelName).ToArray();
Debug.LogFormat("Load enemy wave done, {0} waves in total.", WaveCount);
}
} |
Hello, I found a problem. After building and running the above example on an Android device, starting from the second launch, an exception is thrown: “SQLiteException: duplicate column name: Id.”.
Editor is OK. v1.1.0
The text was updated successfully, but these errors were encountered: