Error
[ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: SqliteException(14): bad parameter or other API misuse, bad parameter or other API misuse (code 21)
#0 new DatabaseImpl.open (package:sqlite3/src/impl/database.dart:53:7)
#1 Sqlite3.open (package:sqlite3/src/api/sqlite3.dart:51:25)
#2 _VmDelegate.open (package:moor/src/ffi/vm_database.dart:126:21)
#3 DelegatedDatabase.ensureOpen.<anonymous closure> (package:moor/src/runtime/executor/helpers/engines.dart:255:22)
<asynchronous suspension>
#4 BasicLock.synchronized (package:synchronized/src/basic_lock.dart:34:18)
<asynchronous suspension>
#5 QueryEngine.doWhenOpened.<anonymous closure> (package:moor/src/runtime/api/query_engine.dart)
<asynchronous suspension>
Database path
C:\Users\fosan\Documents\db.sqlite
Environment
moor: ^3.4.0
sqlite3_flutter_libs: ^0.3.0
path_provider: ^1.6.24
path: ^1.7.0
build_runner: ^1.10.11
moor_generator: ^3.4.0
sqlite3.dll in project's root path - "Using sqlite3 Version(libVersion: 3.34.0, sourceId: 2020-12-01 16:14:00 a26b6597e3ae272231b96f9982c3bcc17ddec2f2b6eb4df06a224b91089fed5b, number: 3034000)"
Flutter doctor
[√] Flutter (Channel dev, 1.26.0-1.0.pre, on Microsoft Windows [Version 10.0.19613.1005],
locale pt-BR)
• Flutter version 1.26.0-1.0.pre at C:\tools\flutter
• Framework revision 63062a6443 (8 days ago), 2020-12-13 23:19:13 +0800
• Engine revision 4797b06652
• Dart version 2.12.0 (build 2.12.0-141.0.dev)
[√] Android toolchain - develop for Android devices (Android SDK version 30.0.3)
• Android SDK at C:\Users\fosan\AppData\Local\Android\sdk
• Platform android-30, build-tools 30.0.3
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
• All Android licenses accepted.
[√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.8.3)
• Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
• Visual Studio Community 2019 version 16.8.30804.86
• Windows 10 SDK version 10.0.18362.0
[√] Android Studio (version 4.1.0)
• Android Studio at C:\Program Files\Android\Android Studio
• Flutter plugin can be installed from:
https://plugins.jetbrains.com/plugin/9212-flutter
• Dart plugin can be installed from:
https://plugins.jetbrains.com/plugin/6351-dart
• Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
[√] Connected device (1 available)
• Windows (desktop) • windows • windows-x64 • Microsoft Windows [Version
10.0.19613.1005]
• No issues found!
Code
import 'dart:ffi';
import 'dart:io';
...
import 'package:flutter/material.dart';
import 'package:sqlite3/open.dart';
import 'package:window_size/window_size.dart';
void main() {
open.overrideFor(OperatingSystem.windows, _openOnWindows);
...
runApp(const App(appName: appName));
}
DynamicLibrary _openOnWindows() {
final sqlite3LibraryPath = join(Platform.script.toFilePath(), 'sqlite3.dll');
return DynamicLibrary.open(sqlite3LibraryPath);
}
import 'dart:io';
import 'package:moor/ffi.dart';
import 'package:moor/moor.dart';
import 'package:path/path.dart' as p;
import 'package:path_provider/path_provider.dart';
part 'local_database.g.dart';
#UseMoor(tables: [ClientsTable])
class LocalDatabase extends _$LocalDatabase {
LocalDatabase() : super(_openConnection());
#override
int get schemaVersion => 1;
Future<int> addClient(ClientRow newClient) =>
into(clientsTable).insert(newClient);
Stream<List<ClientRow>> get watchAllClients => select(clientsTable).watch();
Future<int> deleteClient(int id) =>
(delete(clientsTable)..where((tbl) => tbl.id.equals(id))).go();
}
LazyDatabase _openConnection() {
return LazyDatabase(() async {
final dbFolder = await getApplicationDocumentsDirectory();
final file = File(p.join(dbFolder.path, 'db.sqlite'));
return VmDatabase(file);
});
}
#DataClassName("ClientRow")
class ClientsTable extends Table {
IntColumn get id => integer().autoIncrement()();
TextColumn get name => text()();
TextColumn get phone => text()();
TextColumn get street => text()();
TextColumn get number => text()();
TextColumn get city => text()();
TextColumn get neighborhood => text()();
TextColumn get uf => text()();
TextColumn get reference => text()();
}
Should use sqflite: ^1.3.0 instead of sqlite3_flutter_libs: ^0.3.0
My problems were two things, both related to write permission. The first problem was that my application project was under the Desktop folder and the second one was that the await getApplicationDocumentsDirectory(); returned the Documents folder.
What solved for me was to create the database in the same folder of the project and to move to project folder itself to C:\StudioProjects
When SQLite throws an error, and you then try to use the same prepared statement again, without rebuilding it, SQLite will produce the General error: 21 bad parameter or other API misuse error. You must catch and rebuild the prepared statement from the start to avoid subsequent calls to a now invalid prepared statement stack. (By the way, the fact that this doesn't seg fault, deserves a round of applause to the SQLite devs. They did some awesome work here in a language that is very easy to make seg fault.) It should be noted that this will happen far more often in write statements (INSERT, UPDATE, DELETE, etc) where read only statements (SELECT) are much less likely to cause this error for showing up. So look at your write statements first.
Now anything can cause the error message from happening. My Googleing shows that this is happening in a lot of libraries that aren't handling folder permissions correctly or checking it at time of flight (when the query is actually being executed).
I ran into this problem head first when I was doing multiple INSERT statements one after the other, but the first statement poisoned the prepared statements due to a UNIQUE constraint resulting in subsequent statements giving me the General error: 21 bad parameter or other API misuse.
Related
When running flutter on windows server 2016, doctor is showing VS as not installed. If someone could point me in source as to how flutter detects ide's(my understanding is that they use default locations - not environment vars), that would be helpful.
Thanks to #pskink for locating it; sorry it took me so long to respond back.
location as of: v1.15.9
GitHub Flutter
Found that flutter calls vswhere.exe to resolve location and version information.
EX:
$vsw_path = "C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe";
$vsw_raw_data = (& $vsw_path -version 16);
$vsw_sdata = #{};
$vsw_ins_start = 3;
$vsw_ins_stop = $vsw_raw_data.Count - $vsw_ins_start;
do {
$k,$v = (($vsw_raw_data[$vsw_ins_start]) -Split ':\s');
$vsw_sdata.add($k,$v); ++$vsw_ins_start
} while ($vsw_ins_start -ne $vsw_ins_stop);
$vsw_sdata.productPath
Additionally, it passes '-required' parameters to verify if certain packages are installed, etc: Github VSWhere
After the recent Xamarin Studio (Mac OS) update I'm no longer able to build my PCL with Func<Arg1, TResult> class usage. For some reason it starts to complain that this func doesn't take two args:
Error CS1593: Delegate System.Func<TestClass, TetsClassResult> does
not take 2 arguments (CS1593) (MyPclLib)
If I create a new test project - it works fine with exactly the same code just with a simplified func method body:
public class MyClass
{
public MyClass ()
{
var array = new TestClass [] { new TestClass(), new TestClass() };
var any = array.Select<TestClass, TestClassResult> ((arg1, index) => {
return new TestClassResult (index);
});
}
}
public class TestClass
{
}
public class TestClassResult
{
public TestClassResult(int index)
{
//...
}
}
Even if I simplify my original method it starts to work so I guess after the update Xamarin Studio fails to infer args usage and couldn't much the proper Func<> class, but I couldn't discover how to help it to find it.
Xamarin Studio information:
Xamarin Studio Enterprise
Version 6.1 (build 5441)
Installation UUID: e6dcef46-0a84-444e-bcfd-8be8b1a3b2b1
Runtime:
Mono 4.6.0 (mono-4.6.0-branch/746756c) (64-bit)
GTK+ 2.24.23 (Raleigh theme)
Package version: 406000245
NuGet
Version: 3.4.3.0
Xamarin.Profiler
Not Installed
Apple Developer Tools
Xcode 8.0 (11246)
Build 8A218a
Xamarin.iOS
Version: 10.0.0.6 (Xamarin Enterprise)
Hash: 6c3fee4
Branch: xcode8
Build date: 2016-09-09 13:01:32-0400
Xamarin.Android
Version: 7.0.0.18 (Xamarin Enterprise)
Android SDK: /Users/username/Library/Developer/Xamarin/android-sdk-macosx
Supported Android versions:
4.0.3 (API level 15)
4.1 (API level 16)
4.2 (API level 17)
4.3 (API level 18)
4.4 (API level 19)
4.4.87 (API level 20)
5.0 (API level 21)
5.1 (API level 22)
6.0 (API level 23)
7.0 (API level 24)
SDK Tools Version: 25.2.2
SDK Platform Tools Version: 24.0.3
SDK Build Tools Version: 24.0.2
Java SDK: /usr
java version "1.8.0_101"
Java(TM) SE Runtime Environment (build 1.8.0_101-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.101-b13, mixed mode)
Android Designer EPL code available here:
https://github.com/xamarin/AndroidDesigner.EPL
Xamarin Android Player
Not Installed
Xamarin.Mac
Version: 2.10.0.99 (Xamarin Enterprise)
Build Information
Release ID: 601005441
Git revision: 68292d1ab289911c815ddc715dd7cc29a9752f9f
Build date: 2016-09-09 04:43:23-04
Xamarin addins: ed25d008672663eeb9db55f1ccecb3c24d2fd3b2
Build lane: monodevelop-lion-cycle8
Try this approach
var any = array.Select((testClass) => {
return new TestClassResult (array.IndexOf(testClass));
});
I installed Windows 10 build 10163 and Visual Studio 2013 Ultimate edition on a clean machine, and then added the Windows SDK, WDK, and VSDEV12_WDK based on the specified OS version.
I'm trying to create for the first time a UMDF 2.0 driver by using
File -> New -> Project -> Template -> Visual C++ -> Windows Driver -> WDF -> User Mode V2 Empty, and receive the error below. I would appreciate any help.
C:\Program Files (x86)\Windows Kits\10\build\WindowsDriver.Default.props(13,5): error MSB4186: Invalid static method invocation syntax:
"[Microsoft.Build.Utilities.ToolLocationHelper]::GetLatestSDKTargetPlatformVersion('Windows', '10.0')".
Method 'Microsoft.Build.Utilities.ToolLocationHelper.GetLatestSDKTargetPlatformVersion' not found.
Static method invocation should be of the form: $([FullTypeName]::Method()), e.g. $([System.IO.Path]::Combine(`a`, `b`)). [D:\Workspace\
gcp\gnssAdaptation\winAdaptation\WinPhone\64-bit\gnssDriver\gnssDriver Package\gnssDriver Package.vcxproj]
Done Building Project "D:\Workspace\gcp\gnssAdaptation\winAdaptation\WinPhone\64-bit\gnssDriver\gnssDriver Package\gnss
Driver Package.vcxproj" (Clean target(s)) -- FAILED.
Just after installation of Titanium Studio (Build: jenkins-titanium-rcp-master-197 (origin/master) Date: 26 September 2014, 12:28:18) I created new Alloy mobile project and tried run it (Mobile Web Preview in Browser). Project doesn't execute, in console I see error:
...longjohn.js:185
throw e;
^
TypeError: Bad argument
at ChildProcess.spawn (child_process.js:880:24)
at exports.spawn (child_process.js:680:9)
at async.parallel.powershell (C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\titanium-sdk\lib\windows.js:385:14)
at C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\async\lib\async.js:524:25
at C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\async\lib\async.js:111:13
at Array.forEach (native)
at _each (C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\async\lib\async.js:32:24)
at async.each (C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\async\lib\async.js:110:9)
at _parallel (C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\async\lib\async.js:523:20)
at async.parallel (C:\ProgramData\Titanium\mobilesdk\win32\3.4.0.GA\node_modules\async\lib\async.js:539:9)
I have Win7 x64, java 1.7 x86, node 0.10.13, ADT 23.0.2 I tried different versions of titaium sdk (3.3), node.js but nothing helps.
Please, help. What should I try additional things or should I report some more info?
Thanks
Suggested workaround:
On this line: https://github.com/appcelerator/titanium_mobile/blob/3_3_X/node_modules/titanium-sdk/lib/windows.js#L377
(likely in C:\ProgramData\Titanium\mobilesdk\win32\3.3.0.GA\node_modules\titanium-sdk\lib\windows.js)
Replace:
if (!selectedVisualStudio) return next();
with:
return next();
this workaround is taken from https://jira.appcelerator.org/browse/TIMOB-17411
I'm using VS2013, Xamarin.Android 4.12.4.20.
Build is successful.
I'm getting error from title whenever I try to deploy in debug mode or package.
It started to happened today it work fine before.
I've restarted VS, device, PC - none helped.
Stack trace:
Xamarin.AndroidTools.AndroidDeploymentException: InternalError ---> System.ArgumentException: An item with the same key has already been added.
at System.ThrowHelper.ThrowArgumentException(ExceptionResource resource)
at System.Collections.Generic.Dictionary`2.Insert(TKey key, TValue value, Boolean add)
at Mono.AndroidTools.Adb.AdbSyncDirectory.Add(AdbSyncItem entry)
at Xamarin.AndroidTools.AndroidDeploySession.InstallAssemblies(String destinationPath, CancellationToken token)
at Xamarin.AndroidTools.AndroidDeploySession.FastDev()
at Xamarin.AndroidTools.AndroidDeploySession.Run(CancellationToken token)
at Xamarin.AndroidTools.AndroidDeploySession.RunLogged(CancellationToken token)
--- End of inner exception stack trace ---
at Xamarin.AndroidTools.AndroidDeploySession.RunLogged(CancellationToken token)
at Xamarin.AndroidTools.AndroidDeploySession.Start(CancellationToken token)
Build output:
3>Build succeeded.
3>Waiting for device..
3>Detecting installed packages
3>Detecting installed packages...
3>
3>Removing previous version of application
3>Removing previous version of application...
3>
3>Installing application on device
3>Copying application to device...
3>
3>Getting installation path...
I've figured it out. Make sure that you don't have different versions of the same dll referenced!!
Let me describe my set up a bit more that will help with explaining why exception happened.
I've got two projects
Domain - library with code shared between all platforms
Android - android specific code
Both have nuget references to the same library. At some point android (only in this project) nuget references have been updated which resulted in two versions of the same library required by the application (Domain project still referenced old nuget).
When I tried to package solution I would get warning like :
Consider app.config remapping of assembly "{Library}" from Version "5.6.0.0" [] to Version "5.6.1.0" [{Path}] to solve conflict and get rid of warning.
Once I've update Domain's nuget everything worked.